| | |
| | | </div> |
| | | </el-col> |
| | | <el-col :span="24"> |
| | | <basic-container> |
| | | <basic-container |
| | | :class="[ |
| | | $store.state.control.windowWidth >= 1024 ? 'tooRowSearch' : '', |
| | | ]" |
| | | > |
| | | <avue-crud |
| | | :option="option" |
| | | :search.sync="search" |
| | |
| | | @size-change="sizeChange" |
| | | @refresh-change="refreshChange" |
| | | @on-load="onLoad" |
| | | :defaults.sync="defaults" |
| | | :before-close="beforeClose" |
| | | > |
| | | <!-- @row-update="rowUpdate" --> |
| | | <template slot="menuLeft"> |
| | |
| | | icon="el-icon-upload2" |
| | | v-if="permission.securityGuard_import" |
| | | @click="handleImport1" |
| | | >保安员批量导入 |
| | | >保安员批量导入 |
| | | </el-button> |
| | | <el-button |
| | | type="success" |
| | |
| | | icon="el-icon-upload2" |
| | | v-if="permission.securityGuard_import" |
| | | @click="handleImport2" |
| | | >个人照片批量上传 |
| | | >个人照片批量上传 |
| | | </el-button> |
| | | <el-button |
| | | type="primary" |
| | |
| | | v-if="permission.securityGuard_security_apply" |
| | | icon="el-icon-s-promotion" |
| | | @click="handleSecurityApply" |
| | | >上岗证制证申请 |
| | | >上岗证制证申请 |
| | | </el-button> |
| | | <el-button |
| | | type="primary" |
| | |
| | | v-if="permission.securityGuard_security_paper_apply" |
| | | icon="el-icon-collection-tag" |
| | | @click="handleSecurityPaperApply" |
| | | >证书制证申请 |
| | | >证书制证申请 |
| | | </el-button> |
| | | <el-button |
| | | type="primary" |
| | | type="warning" |
| | | size="small" |
| | | plain |
| | | v-if="permission.securityGuard_escort_personnel_import" |
| | | icon="el-icon-collection-tag" |
| | | @click="handleEscortPersonnelImport" |
| | | >押运人员批量导入 |
| | | icon="el-icon-download" |
| | | v-if="permission.export_security_info" |
| | | @click="handleExportSecurityInfo" |
| | | >保安信息导出 |
| | | </el-button> |
| | | |
| | | <el-button |
| | |
| | | plain |
| | | icon="el-icon-delete" |
| | | @click="handleDelete" |
| | | >注 销 |
| | | >注 销 |
| | | </el-button> |
| | | <el-button |
| | | type="info" |
| | |
| | | v-if="permission.user_role" |
| | | icon="el-icon-user" |
| | | @click="handleGrant" |
| | | >角色配置 |
| | | >角色配置 |
| | | </el-button> |
| | | <el-button |
| | | type="info" |
| | |
| | | v-if="permission.user_reset" |
| | | icon="el-icon-refresh" |
| | | @click="handleReset" |
| | | >密码重置 |
| | | >密码重置 |
| | | </el-button> |
| | | <el-button |
| | | type="info" |
| | |
| | | v-if="userInfo.role_name.includes('admin')" |
| | | icon="el-icon-setting" |
| | | @click="handlePlatform" |
| | | >平台配置 |
| | | >平台配置 |
| | | </el-button> |
| | | <el-button |
| | | type="success" |
| | |
| | | v-if="userInfo.role_name.includes('admin')" |
| | | icon="el-icon-upload2" |
| | | @click="handleImport" |
| | | >导入 |
| | | >导入 |
| | | </el-button> |
| | | <el-button |
| | | type="warning" |
| | |
| | | v-if="userInfo.role_name.includes('admin')" |
| | | icon="el-icon-download" |
| | | @click="handleExport" |
| | | >导出 |
| | | >导出 |
| | | </el-button> |
| | | </template> |
| | | |
| | |
| | | :size="size" |
| | | :type="type" |
| | | @click.stop="rowClick(row)" |
| | | >查看 |
| | | >查看 |
| | | </el-button> |
| | | <el-button |
| | | icon="el-icon-edit" |
| | |
| | | :type="type" |
| | | v-if="permission.securityGuard_delete && row.status != 2" |
| | | @click.stop="rowStatus(row)" |
| | | >离职登记 |
| | | >离职登记 |
| | | </el-button> |
| | | <el-button |
| | | icon="el-icon-edit" |
| | |
| | | :type="type" |
| | | v-if="row.status == 2" |
| | | @click.stop="rowDellook(row)" |
| | | >离职查询 |
| | | >离职查询 |
| | | </el-button> |
| | | <el-button |
| | | icon="el-icon-edit" |
| | |
| | | :type="type" |
| | | v-if="permission.securityGuard_check" |
| | | @click.stop="rowCheck(row)" |
| | | >异常 |
| | | >异常 |
| | | </el-button> |
| | | <el-button |
| | | icon="el-icon-edit" |
| | | style="display: none" |
| | | :size="size" |
| | | :type="type" |
| | | v-if="permission.securityGuard_paper" |
| | | @click.stop="certificateClick(row)" |
| | | >纸质证书制作 |
| | | >纸质证书制作 |
| | | </el-button> |
| | | </template> |
| | | |
| | |
| | | class="rowClickSelf" |
| | | title="点击查看所属公司情况" |
| | | @click="rowClickSelf(row.deptId)" |
| | | >{{ row.deptName }} |
| | | </el-tag |
| | | > |
| | | >{{ row.deptName }} |
| | | </el-tag> |
| | | </template> |
| | | <template slot-scope="{ row }" slot="tenantName"> |
| | | <el-tag>{{ row.tenantName }}</el-tag> |
| | |
| | | {{ |
| | | certificateObj.cardid |
| | | ? certificateObj.cardid.slice(6, 10) + |
| | | "." + |
| | | certificateObj.cardid.slice(10, 12) + |
| | | "." + |
| | | certificateObj.cardid.slice(12, 14) |
| | | "." + |
| | | certificateObj.cardid.slice(10, 12) + |
| | | "." + |
| | | certificateObj.cardid.slice(12, 14) |
| | | : "" |
| | | }} |
| | | </div> |
| | |
| | | </div> |
| | | </basic-container> |
| | | </el-col> |
| | | <div |
| | | :class="[ |
| | | $store.state.control.windowWidth >= 1024 |
| | | ? 'downSFZqudong' |
| | | : 'downSFZqudongS', |
| | | ]" |
| | | > |
| | | <el-checkbox v-model="radio" :disabled="SFZloding" |
| | | >使用身份证设备</el-checkbox |
| | | > |
| | | <el-button |
| | | type="text" |
| | | v-show="haveSEL == 'noDrive' || haveSEL == 'noEquipment'" |
| | | @click="SFZopens" |
| | | :loading="SFZloding" |
| | | >{{ sfzButTitle }}</el-button |
| | | > |
| | | <!-- <div style="font-size: 14px">连接身份证设备失败</div> --> |
| | | <!-- v-show="haveSEL == 'noDrive'" --> |
| | | <!-- href="http://223.82.109.183:2081/zhba/upload/20211201/64d8b76f3aecae93e18d015bbca89aba.rar" --> |
| | | <!-- <a href="javascript;">未安装身份证驱动,点击下载</a> --> |
| | | </div> |
| | | </el-row> |
| | | </template> |
| | | |
| | | <script> |
| | | // 身份证引入 |
| | | import CertCtl from "./sfzJS"; |
| | | import { |
| | | getUser, |
| | | getUserPlatform, |
| | |
| | | saveOrUpdateUserPractitionersInfo, |
| | | getzhiwen, //指纹 |
| | | } from "@/api/system/user"; |
| | | import {securityApply} from "@/api/accreditationRecords/accreditationRecords"; |
| | | import {getList} from "@/api/securityGuard/securityGuard"; |
| | | import {getDeptLazyTree} from "@/api/system/dept"; |
| | | import {getRoleTree, getRoleDetail} from "@/api/system/role"; |
| | | import {getPostList} from "@/api/system/post"; |
| | | import {mapGetters} from "vuex"; |
| | | import { securityApply } from "@/api/accreditationRecords/accreditationRecords"; |
| | | import { getList } from "@/api/securityGuard/securityGuard"; |
| | | import { getDeptLazyTree } from "@/api/system/dept"; |
| | | import { getRoleTree, getRoleDetail } from "@/api/system/role"; |
| | | import { getPostList } from "@/api/system/post"; |
| | | import { mapGetters } from "vuex"; |
| | | import website from "@/config/website"; |
| | | import {getToken} from "@/util/auth"; |
| | | import {securityFormPageColumn} from "./data"; |
| | | import {mapState} from "vuex"; |
| | | import { getToken } from "@/util/auth"; |
| | | import { securityFormPageColumn } from "./data"; |
| | | import { mapState } from "vuex"; |
| | | import Qs from "qs"; |
| | | |
| | | //加载指纹类 |
| | | import Client from "./Client"; |
| | |
| | | oldm, |
| | | oldd, |
| | | ok = false; |
| | | |
| | | const validatePassCardid = (rule, value, callback) => { |
| | | // 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("年龄不符")); |
| | | } |
| | | var Wi = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2, 1]; // 加权因子 |
| | | var ValideCode = [1, 0, 10, 9, 8, 7, 6, 5, 4, 3, 2]; // 身份证验证位值.10代表X |
| | | /** |
| | | * 判断身份证号码为18位时最后的验证位是否正确 |
| | | * @param a_idCard 身份证号码数组 |
| | | * @return |
| | | */ |
| | | function isTrueValidateCodeBy18IdCard(a_idCard) { |
| | | var sum = 0; // 声明加权求和变量 |
| | | if (a_idCard[17].toLowerCase() == "x") { |
| | | a_idCard[17] = 10; // 将最后位为x的验证码替换为10方便后续操作 |
| | | } |
| | | for (var i = 0; i < 17; i++) { |
| | | sum += Wi[i] * a_idCard[i]; // 加权求和 |
| | | } |
| | | let valCodePosition = sum % 11; // 得到验证码所位置 |
| | | if (a_idCard[17] == ValideCode[valCodePosition]) { |
| | | return true; |
| | | } else { |
| | | return false; |
| | | } |
| | | } |
| | | /** |
| | | * 验证18位数身份证号码中的生日是否是有效生日 |
| | | * @param idCard 18位书身份证字符串 |
| | | * @return |
| | | */ |
| | | function isValidityBrithBy18IdCard(idCard18) { |
| | | var year = idCard18.substring(6, 10); |
| | | var month = idCard18.substring(10, 12); |
| | | var day = idCard18.substring(12, 14); |
| | | var temp_date = new Date(year, parseFloat(month) - 1, parseFloat(day)); |
| | | // 这里用getFullYear()获取年份,避免千年虫问题 |
| | | if ( |
| | | temp_date.getFullYear() != parseFloat(year) || |
| | | temp_date.getMonth() != parseFloat(month) - 1 || |
| | | temp_date.getDate() != parseFloat(day) |
| | | ) { |
| | | return false; |
| | | } else { |
| | | return true; |
| | | } |
| | | } |
| | | //去掉字符串头尾空格 |
| | | function trim(str) { |
| | | return str.replace(/(^\s*)|(\s*$)/g, ""); |
| | | } |
| | | const validatePassCardid = (rule, value, callback) => { |
| | | let ok = false; |
| | | if (value.length == 18) { |
| | | let idCard = trim(value.replace(/ /g, "")); |
| | | var a_idCard = idCard.split(""); |
| | | if ( |
| | | isValidityBrithBy18IdCard(idCard) && |
| | | isTrueValidateCodeBy18IdCard(a_idCard) |
| | | ) { |
| | | //进行18位身份证的基本验证和第18位的验证 |
| | | ok = true; |
| | | } else { |
| | | ok = false; |
| | | } |
| | | } else { |
| | | ok = false; |
| | | } |
| | | |
| | | if (ok) { |
| | | callback(); |
| | | } 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; |
| | |
| | | } |
| | | }; |
| | | return { |
| | | nowCell: "", //空为手动,2为身份证设备读取 |
| | | // 表格数据 |
| | | defaults: {}, |
| | | // 身份证设备数据 |
| | | SFZloding: false, |
| | | sfzButTitle: "", |
| | | radio: false, //选择状态 |
| | | haveSEL: "", //设备状态 |
| | | cardShebei: "", |
| | | intTime: "", //自动获取身份证; |
| | | haveCardid: false, //读卡开关 |
| | | // 指纹数据 |
| | | isopen: false, //识别是否需要传指纹进去(解决异步传递后指纹DOM不存在的问题) |
| | | zhiwenImg: "", |
| | |
| | | pageSize: 10, |
| | | currentPage: 1, |
| | | total: 0, |
| | | ...this.$store.state.control.changePageSize, |
| | | }, |
| | | roleId: "1412226235153731586", |
| | | deptId: "1413470343230877697", |
| | |
| | | pageSize: 10, |
| | | currentPage: 1, |
| | | total: 0, |
| | | ...this.$store.state.control.changePageSize, |
| | | }, |
| | | init: { |
| | | roleTree: [], |
| | |
| | | searchShow: true, |
| | | reserveSelection: true, |
| | | selectable: (row) => { |
| | | if (row.hold !== "1" || row.securitynumber == null || row.securitynumber == '') { |
| | | if ( |
| | | row.hold !== "1" || |
| | | row.securitynumber == null || |
| | | row.securitynumber == "" |
| | | ) { |
| | | return false; |
| | | } else { |
| | | return true; |
| | |
| | | //dialogType: 'drawer', |
| | | dialogClickModal: false, |
| | | column: securityFormPageColumn, |
| | | ...this.$store.state.control.clearOtherBut, |
| | | group: [ |
| | | { |
| | | label: "基础信息", |
| | |
| | | icon: "el-icon-user-solid", |
| | | column: [ |
| | | { |
| | | label: "所属保安公司", |
| | | label: "企业名称", |
| | | prop: "deptId", |
| | | type: "tree", |
| | | // dicUrl: |
| | |
| | | { |
| | | label: "姓名", |
| | | prop: "realName", |
| | | disabled: false, |
| | | rules: [ |
| | | { |
| | | required: true, |
| | |
| | | ratio: 0.1, |
| | | }, |
| | | action: "/api/blade-resource/oss/endpoint/put-files", |
| | | tip: "上传二代身份证一寸近期彩色正面免冠图象, (358像素(宽) × 441像素(高)、分辨率350dpi)且不超过500kb", |
| | | tip: "上传身份证一寸近期彩色正面免冠图象, (358像素(宽) × 441像素(高)、分辨率350dpi)且不超过500kb", |
| | | span: 12, |
| | | // row: true, |
| | | prop: "avatar", |
| | |
| | | }; |
| | | }, |
| | | watch: { |
| | | radio() { |
| | | if (this.radio) { |
| | | this.SFZloding = true; |
| | | this.olondSFZ(); |
| | | } else { |
| | | if (this.haveSEL != "noDrive" && this.haveSEL != "noEquipment") { |
| | | this.$message({ |
| | | type: "warning", |
| | | message: "关闭身份证设备识别!", |
| | | }); |
| | | } |
| | | } |
| | | }, |
| | | "form.tenantId"() { |
| | | if (this.form.tenantId !== "" && this.initFlag) { |
| | | this.initData(this.form.tenantId); |
| | |
| | | userInfo: (state) => state.user.userInfo, |
| | | }), |
| | | }, |
| | | beforeCreate() { |
| | | }, |
| | | beforeCreate() {}, |
| | | created() { |
| | | console.log(this.userInfo, 9999); |
| | | var that = this; |
| | | // console.log(this.userInfo, 9999); |
| | | if (this.userInfo.role_name == "办证管理员") { |
| | | this.search["userType"] = 7; |
| | | this.search["hold"] = "1"; |
| | | } |
| | | var roleName = this.userInfo.role_name; |
| | | // console.log(this.userInfo,52252); |
| | | // this.userInfo.rname.forEach((roleName) => { |
| | | if ( |
| | | roleName == "保安公司管理员" || |
| | | roleName == "保安" || |
| | | roleName == "分公司管理员" |
| | | ) { |
| | | //查询保安单位信息(包含子级) |
| | | const column = this.findObject(this.option.column, "deptId"); |
| | | // column.search = false; |
| | | //默认全部展开 |
| | | column.defaultExpandAll = true; |
| | | column.dicUrl = |
| | | "/api/blade-system/dept/security_lazy-tree?deptId=" + |
| | | this.userInfo.dept_id; |
| | | } else if (roleName == "公安管理员" || roleName == "administrator") { |
| | | var columnDept = that.findObject(that.option.column, "deptId"); |
| | | columnDept.dicUrl = |
| | | "/api/blade-system/dept/security_lazy-tree?jurisdiction=" + |
| | | that.userInfo.jurisdiction; |
| | | } else { |
| | | //查询保安单位信息(包含子级) |
| | | const column = this.findObject(this.option.column, "deptId"); |
| | | // column.search = false; |
| | | //默认全部展开 |
| | | column.dicUrl = "/api/blade-system/dept/security_lazy-tree"; |
| | | } |
| | | // }); |
| | | |
| | | if (this.userInfo.account == "南昌市保安服务总公司" || this.userInfo.account == "押运分公司") { |
| | | if ( |
| | | this.userInfo.account == "南昌市保安服务总公司" || |
| | | this.userInfo.account == "押运分公司" |
| | | ) { |
| | | this.option.column.push({ |
| | | label: "持枪证编号", |
| | | prop: "guncode", |
| | | width: 90, |
| | | addDisplay: false, |
| | | editDisplay: false |
| | | }) |
| | | editDisplay: false, |
| | | }); |
| | | |
| | | this.option.group[1].column.push({ |
| | | label: "持枪证编号", |
| | | prop: "guncode", |
| | | }) |
| | | }); |
| | | |
| | | this.excelOption1.column[0].action = "/api/blade-user/import-securityYy?deptId=" + this.userInfo.dept_id |
| | | |
| | | this.excelOption1.column[0].action = |
| | | "/api/blade-user/import-securityYy?deptId=" + this.userInfo.dept_id; |
| | | } |
| | | |
| | | }, |
| | | mounted() { |
| | | // this.option.column[0].hide = true |
| | |
| | | this.deptIds = this.userInfo.dept_id; |
| | | |
| | | // this.beginzhiwen(); |
| | | // this.olondSFZ(); //检查身份证设备是否存在 |
| | | }, |
| | | methods: { |
| | | openccc() { |
| | |
| | | done(); |
| | | }, |
| | | handleTemplate1() { |
| | | if (this.userInfo.account == "南昌市保安服务总公司" || this.userInfo.account == "押运分公司") { |
| | | if ( |
| | | this.userInfo.account == "南昌市保安服务总公司" || |
| | | this.userInfo.account == "押运分公司" |
| | | ) { |
| | | window.open(`/api/blade-user/export-template-securityYy`); |
| | | return |
| | | return; |
| | | } |
| | | window.open(`/api/blade-user/export-template-security`); |
| | | }, |
| | |
| | | rowClick(row) { |
| | | this.$router.push({ |
| | | path: "/securityGuardDetail", |
| | | query: {row: JSON.stringify(row)}, |
| | | query: { row: JSON.stringify(row) }, |
| | | }); |
| | | }, |
| | | //行点击事件 |
| | |
| | | this.certificateObj.registered == "" || |
| | | this.certificateObj.registered == null |
| | | ) { |
| | | this.$message({message: "请完善身份证住址信息", type: "warning"}); |
| | | this.$message({ message: "请完善身份证住址信息", type: "warning" }); |
| | | return; |
| | | } |
| | | //更新发证时间 |
| | |
| | | rowClickSelf(row) { |
| | | this.$router.push({ |
| | | path: "/securityUnitChild", |
| | | query: {fromSecunityGuardId: row}, |
| | | query: { fromSecunityGuardId: row }, |
| | | }); |
| | | }, |
| | | nodeClick(data) { |
| | |
| | | const data = { |
| | | ids: str, |
| | | createUser: this.userInfo.user_id, |
| | | type: 1 |
| | | type: 1, |
| | | }; |
| | | return securityApply(data); |
| | | }) |
| | |
| | | const data = { |
| | | ids: str, |
| | | createUser: this.userInfo.user_id, |
| | | type: 2 |
| | | type: 2, |
| | | }; |
| | | return securityApply(data); |
| | | }) |
| | |
| | | message: "操作成功!", |
| | | }); |
| | | }); |
| | | }, |
| | | //保安员信息导出 |
| | | handleExportSecurityInfo() { |
| | | this.$confirm("是否导出保安员信息数据?", "提示", { |
| | | confirmButtonText: "确定", |
| | | 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, |
| | | roleAlias: "111", |
| | | hold: this.search.hold, |
| | | realName: this.search.realName, |
| | | securitynumber: this.search.securitynumber, |
| | | status: this.search.status, |
| | | userType: this.search.startTime, |
| | | examinationType: this.search.examinationType, |
| | | }; |
| | | // console.log(data,123456); |
| | | //导出 |
| | | if (this.userInfo.role_name == "保安公司管理员") { |
| | | //如果是保安公司管理员 |
| | | if (this.search.deptId) { |
| | | data["deptId"] = this.search.deptId; |
| | | } else { |
| | | data["deptId"] = this.userInfo.dept_id; |
| | | } |
| | | } |
| | | if (this.userInfo.role_name == "培训公司管理员") { |
| | | //如果是培训公司管理员 |
| | | data["trainingUnitId"] = this.userInfo.Id; |
| | | } |
| | | if (this.userInfo.role_name == "公安管理员") { |
| | | //如果是公安管理员 |
| | | data["jurisdiction"] = this.userInfo.jurisdiction; |
| | | } |
| | | //序列号url形式,用&拼接 |
| | | data = Qs.stringify(data); |
| | | window.open( |
| | | `/api/blade-user/export-security-info?${ |
| | | this.website.tokenHeader |
| | | }=${getToken()}&` + data |
| | | ); |
| | | }); |
| | | }, |
| | | rowSave(row, done, loading) { |
| | | // var dom = document.getElementById("zhiwenOur"); |
| | |
| | | } |
| | | const userMap = { |
| | | user: { |
| | | //是否是身份证自动识别进入 |
| | | cell: this.nowCell, |
| | | //指纹↓ |
| | | fingerprint: zhiwen.imgBMP, //图 |
| | | myPicture: zhiwen.featuredata, //特征 |
| | |
| | | rtime: row.rtime, |
| | | securitynumber: row.securitynumber, |
| | | sex: row.sex, |
| | | guncode: row.guncode, |
| | | }, |
| | | }; |
| | | |
| | |
| | | row.fingerprint = zhiwen.imgBMP; |
| | | row.myPicture = zhiwen.featuredata; |
| | | } |
| | | // console.log(row); |
| | | // return; |
| | | |
| | | //是否是身份证自动识别进入 |
| | | if (row.cell != "2") { |
| | | row["cell"] = this.nowCell; |
| | | } |
| | | update(row).then( |
| | | () => { |
| | | this.initFlag = false; |
| | |
| | | "离职原因", |
| | | { |
| | | confirmButtonText: "确定", |
| | | callback: (action) => { |
| | | }, |
| | | callback: (action) => {}, |
| | | } |
| | | ); |
| | | }, |
| | |
| | | cancelButtonText: "取消", |
| | | inputErrorMessage: "", |
| | | }) |
| | | .then(({value}) => { |
| | | .then(({ value }) => { |
| | | row.reasonForLeav = value; |
| | | row.status = "2"; |
| | | // return; |
| | |
| | | }); |
| | | this.refreshChange(); |
| | | }) |
| | | .catch(() => { |
| | | }); |
| | | .catch(() => {}); |
| | | }, |
| | | rowDel(row) { |
| | | this.$confirm("确定注销当前用户?", { |
| | |
| | | }=${getToken()}` |
| | | ); |
| | | }, |
| | | openClosegroup(val) { |
| | | // let ql = /realName|nation|cardid|registered|sex/; |
| | | let ql = /realName|nation|cardid|registered/; |
| | | for (let k in this.option.group) { |
| | | for (let i in this.option.group[k].column) { |
| | | if (ql.test(this.option.group[k].column[i].prop)) { |
| | | this.option.group[k].column[i]["disabled"] = val; |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | SFZopens() { |
| | | if (this.haveSEL == "noDrive") { |
| | | let url = |
| | | "http://223.82.109.183:2081/zhba/upload/20211201/64d8b76f3aecae93e18d015bbca89aba.rar"; |
| | | window.open(url, "_self"); |
| | | } else if (this.haveSEL == "noEquipment") { |
| | | this.radio = true; |
| | | } |
| | | }, |
| | | olondSFZ() { |
| | | // console.log(123456); |
| | | var that = this; |
| | | // // 开始连接设备 |
| | | // //调用对应的连接方法,并赋值给result |
| | | let lodings = (val) => { |
| | | setTimeout((res) => { |
| | | that.SFZloding = val; |
| | | }, 1000); |
| | | }; |
| | | this.cardShebei = CertCtl.connect((res) => { |
| | | let k = ""; |
| | | try { |
| | | k = JSON.parse(res); |
| | | } catch (error) { |
| | | k = res; |
| | | } |
| | | // console.log(res); |
| | | if (k == "") { |
| | | that.haveSEL = "noDrive"; |
| | | // console.log("连接身份证设备失败,请安装驱动"); |
| | | that.sfzButTitle = "未安装身份证驱动,点击下载"; |
| | | this.$message({ |
| | | type: "warning", |
| | | message: "连接身份证设备失败,请重新连接设备!", |
| | | }); |
| | | that.radio = false; |
| | | lodings(false); |
| | | return; |
| | | } |
| | | if (k.resultFlag == 0) { |
| | | that.haveSEL = "connectionSucceeded"; |
| | | // console.log("连接身份证设备成功"); |
| | | this.$message({ |
| | | type: "success", |
| | | message: "连接身份证设备成功!", |
| | | }); |
| | | lodings(false); |
| | | } else { |
| | | that.haveSEL = "noEquipment"; |
| | | that.sfzButTitle = "连接身份证设备失败,请重试"; |
| | | // console.log("连接身份证设备失败,请重新连接设备!"); |
| | | this.$message({ |
| | | type: "warning", |
| | | message: "连接身份证设备失败,请重新连接设备!", |
| | | }); |
| | | that.radio = false; |
| | | lodings(false); |
| | | } |
| | | }); |
| | | }, |
| | | setIntervals: function () { |
| | | let that = this; |
| | | this.intTime = setInterval(function () { |
| | | if (!that.haveCardid) { |
| | | //定时读卡 |
| | | // console.log(that.haveCardid); |
| | | let result = CertCtl.readCert(); |
| | | // console.log(result); |
| | | // console.log("通过读取"); |
| | | if (result == "") { |
| | | console.log("未启动读卡插件!"); |
| | | that.closeSFZ(); |
| | | } else { |
| | | var resultObj = eval("(" + result + ")"); |
| | | //resultFlag为0代表读卡成功 |
| | | if (resultObj.resultFlag == "0") { |
| | | //回显相关数据 |
| | | // console.log(resultObj, 123); |
| | | const data = resultObj.resultContent; |
| | | that.haveCardid = true; |
| | | // console.log(data, 789); |
| | | // that.defaults.cardid.display = true; |
| | | // that.defaults.cardid.value = "123"; |
| | | // console.log(that.defaults); |
| | | that.form.realName = data.partyName; |
| | | that.form.cardid = data.certNumber; |
| | | that.form.nation = data.nation; |
| | | that.form.registered = data.certAddress; |
| | | that.form.sex = data.gender == 0 ? 2 : data.gender == 1 ? 1 : 3; |
| | | //禁止编辑 |
| | | that.openClosegroup(true); |
| | | that.nowCell = "2"; |
| | | } else if (resultObj.resultFlag == "-1") { |
| | | if (resultObj.errorMsg == "端口打开失败") { |
| | | console.log("读卡器未连接"); |
| | | that.closeSFZ(); |
| | | } else { |
| | | // console.log("无卡片提醒-1", resultObj.errorMsg); |
| | | //无卡片提醒 |
| | | // that.closeSFZ(); |
| | | } |
| | | } else if (resultObj.resultFlag == "-2") { |
| | | console.log("异常-2", resultObj.errorMsg); |
| | | that.closeSFZ(); |
| | | } |
| | | } |
| | | } else { |
| | | // console.log("停止获取"); |
| | | } |
| | | }, 2000); |
| | | }, |
| | | beginSFZ() { |
| | | if (this.haveSEL == "connectionSucceeded" && this.radio) { |
| | | this.haveCardid = false; |
| | | if (this.intTime) { |
| | | clearInterval(this.intTime); |
| | | this.setIntervals(); |
| | | } else { |
| | | this.setIntervals(); |
| | | } |
| | | } else { |
| | | clearInterval(this.intTime); |
| | | } |
| | | }, |
| | | closeSFZ(val) { |
| | | if (this.intTime) { |
| | | clearInterval(this.intTime); |
| | | // this.setIntervals(); |
| | | } else { |
| | | clearInterval(this.intTime); |
| | | // this.setIntervals(); |
| | | } |
| | | if (val) { |
| | | this.haveCardid = true; |
| | | this.cardShebei = ""; |
| | | //可以编辑 |
| | | } |
| | | this.openClosegroup(false); |
| | | this.nowCell = ""; |
| | | }, |
| | | beforeOpen(done, type) { |
| | | var that = this; |
| | | // console.log(type, 123); |
| | | this.beginSFZ(); |
| | | if (["edit", "view"].includes(type)) { |
| | | getUser(this.form.id).then((res) => { |
| | | this.form = res.data.data; |
| | |
| | | this.initFlag = true; |
| | | done(); |
| | | }, |
| | | beforeClose(done, type) { |
| | | this.closeSFZ(112); |
| | | done(); |
| | | }, |
| | | currentChange(currentPage) { |
| | | this.page.currentPage = currentPage; |
| | | }, |
| | | //行样式调整 |
| | | rowStyle({row, column, rowIndex}) { |
| | | rowStyle({ row, column, rowIndex }) { |
| | | if (row.examinationType == "1") { |
| | | return { |
| | | color: "#ff2727", |
| | |
| | | roleIds.forEach((roleId) => { |
| | | getRoleDetail(roleId).then((res) => { |
| | | var roleAlias = res.data.data.roleAlias; |
| | | if (roleAlias == "保安公司管理员" || roleAlias == "保安") { |
| | | if (roleAlias == "保安公司管理员") { |
| | | that.option.group[1].column[4].dicData = [ |
| | | { |
| | | label: "是", |
| | | value: "1", |
| | | }, |
| | | { |
| | | label: "否", |
| | | value: "2", |
| | | }, |
| | | ]; |
| | | } |
| | | if ( |
| | | roleAlias == "保安公司管理员" || |
| | | roleAlias == "保安" || |
| | | roleAlias == "分公司管理员" |
| | | ) { |
| | | //去除保安公司查询 |
| | | const column = that.findObject(that.option.column, "deptId"); |
| | | column.search = false; |
| | | // const column = that.findObject(that.option.column, "deptId"); |
| | | // column.search = false; |
| | | // column.dicUrl = |
| | | // "/api/blade-system/dept/security_lazy-tree?deptId="+that.userInfo.dept_id; |
| | | const deptColumn = that.findObject(that.option.group, "deptId"); |
| | | deptColumn.dicUrl = |
| | | "/api/blade-system/dept/security_lazy-tree?parentId=1413470343230877697"; |
| | | "/api/blade-system/dept/security_lazy-tree?deptId=" + |
| | | that.userInfo.dept_id; |
| | | //禁止编辑 |
| | | deptColumn.disabled = true; |
| | | // deptColumn.disabled = true; |
| | | deptColumn.value = that.userInfo.dept_id; |
| | | that.isSecurity = false; |
| | | //如果是保安公司管理员 |
| | | params["deptId"] = that.userInfo.dept_id; |
| | | |
| | | if (this.search.deptId) { |
| | | params["deptId"] = this.search.deptId; |
| | | } else { |
| | | params["deptId"] = that.userInfo.dept_id; |
| | | } |
| | | //导入action 修改 |
| | | const importColumn = that.findObject( |
| | | that.excelOption1.column, |
| | |
| | | ); |
| | | importColumn.action = |
| | | "/api/blade-user/import-security?deptId=" + this.deptIds; |
| | | } else if (roleAlias == "公安管理员") { |
| | | } else if ( |
| | | roleAlias == "公安管理员" || |
| | | roleAlias == "administrator" |
| | | ) { |
| | | params["jurisdiction"] = that.userInfo.jurisdiction; |
| | | var columnDept = that.findObject(that.option.column, "deptId"); |
| | | columnDept.dicUrl = |
| | | "/api/blade-system/dept/security_lazy-tree?parentId=1413470343230877697&jurisdiction=" + |
| | | that.userInfo.jurisdiction; |
| | | var ColumnDeptUpdate = that.findObject(that.option.group, "deptId"); |
| | | ColumnDeptUpdate.dicUrl = |
| | | "/api/blade-system/dept/security_lazy-tree?parentId=1413470343230877697&jurisdiction=" + |
| | | "/api/blade-system/dept/security_lazy-tree?jurisdiction=" + |
| | | that.userInfo.jurisdiction; |
| | | } else if (roleAlias == "培训公司管理员") { |
| | | //如果是保安公司管理员 |
| | | params["trainingUnitId"] = that.userInfo.dept_id; |
| | | var columnDept2 = that.findObject(that.option.column, "deptId"); |
| | | columnDept2.dicUrl = |
| | | "/api/blade-system/dept/security_lazy-tree?parentId=1413470343230877697"; |
| | | var ColumnDeptUpdate2 = that.findObject( |
| | | that.option.group, |
| | | "deptId" |
| | | |
| | | //审查状态查询开启 |
| | | var columnExaminationType = that.findObject( |
| | | that.option.column, |
| | | "examinationType" |
| | | ); |
| | | ColumnDeptUpdate2.dicUrl = |
| | | "/api/blade-system/dept/security_lazy-tree?parentId=1413470343230877697"; |
| | | columnExaminationType.search = true; |
| | | columnExaminationType.hide = false; |
| | | } else { |
| | | var columnDept1 = that.findObject(that.option.column, "deptId"); |
| | | columnDept1.dicUrl = |
| | | "/api/blade-system/dept/security_lazy-tree?parentId=1413470343230877697"; |
| | | var ColumnDeptUpdate1 = that.findObject( |
| | | that.option.group, |
| | | "deptId" |
| | | ); |
| | | ColumnDeptUpdate1.dicUrl = |
| | | "/api/blade-system/dept/security_lazy-tree?parentId=1413470343230877697"; |
| | | "/api/blade-system/dept/security_lazy-tree"; |
| | | } |
| | | |
| | | let values = { |
| | |
| | | getList(page.currentPage, page.pageSize, values).then((res) => { |
| | | const data = res.data.data; |
| | | that.page.total = data.total; |
| | | var d = data.records; |
| | | var date = new Date(); |
| | | var datayear = date.getFullYear(); |
| | | for (const key in d) { |
| | | var year = d[key].cardid.slice(6, 10); |
| | | d[key]["age"] = +datayear - +year; |
| | | // d[key].securitynumber = "赣洪202100009"; |
| | | } |
| | | // var d = data.records; |
| | | // var date = new Date(); |
| | | // var datayear = date.getFullYear(); |
| | | // for (const key in d) { |
| | | // var year = d[key].cardid.slice(6, 10); |
| | | // d[key]["age"] = +datayear - +year; |
| | | // // d[key].securitynumber = "赣洪202100009"; |
| | | // } |
| | | that.data = data.records; |
| | | that.loading = false; |
| | | that.selectionClear(); |
| | |
| | | // text-align: center; |
| | | // border: 1px dashed #8c939d; |
| | | // } |
| | | |
| | | .downSFZqudong { |
| | | position: absolute; |
| | | right: 239px; |
| | | top: 153px; |
| | | font-size: 14px; |
| | | a { |
| | | text-decoration: underline; |
| | | &:hover { |
| | | color: rgb(36, 143, 231); |
| | | } |
| | | } |
| | | } |
| | | .downSFZqudongS { |
| | | position: absolute; |
| | | right: 30px; |
| | | top: 10px; |
| | | font-size: 14px; |
| | | a { |
| | | text-decoration: underline; |
| | | &:hover { |
| | | color: rgb(36, 143, 231); |
| | | } |
| | | } |
| | | } |
| | | </style> |