| | |
| | | <template> |
| | | <el-row :class="{securityGuard : isSecurity}"> |
| | | <el-row :class="{ securityGuard: isSecurity }"> |
| | | <el-col :span="0" style="display: none"> |
| | | <div class="box"> |
| | | <el-scrollbar> |
| | |
| | | icon="el-icon-upload2" |
| | | v-if="permission.securityGuard_import" |
| | | @click="handleImport1" |
| | | >批量导入 |
| | | >保安员批量导入 |
| | | </el-button> |
| | | <el-button |
| | | type="success" |
| | |
| | | icon="el-icon-edit" |
| | | :size="size" |
| | | :type="type" |
| | | v-if="permission.securityGuard_delete" |
| | | @click.stop="rowDel(row)" |
| | | v-if="permission.securityGuard_delete && row.status != 2" |
| | | @click.stop="rowStatus(row)" |
| | | >离职登记 |
| | | </el-button> |
| | | <el-button |
| | | icon="el-icon-edit" |
| | | :size="size" |
| | | :type="type" |
| | | v-if="row.status == 2" |
| | | @click.stop="rowDellook(row)" |
| | | >离职查询 |
| | | </el-button> |
| | | <el-button |
| | | icon="el-icon-edit" |
| | |
| | | |
| | | export default { |
| | | data() { |
| | | const validatePass = (rule, value, callback) => { |
| | | if (value === "") { |
| | | callback(new Error("请输入密码")); |
| | | // 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(); |
| | | // } |
| | | // }; |
| | | var date = new Date(); |
| | | let year = date.getFullYear(), |
| | | mouth = date.getMonth() + 1, |
| | | day = date.getDate(), |
| | | oldy, |
| | | 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("年龄不符")); |
| | | } |
| | | } |
| | | }; |
| | | 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; |
| | | if (!test.test(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(); |
| | | } |
| | | }; |
| | | console.log(this.userInfo, 123); |
| | | |
| | | return { |
| | | securityid: "", |
| | | excelBox1: false, |
| | |
| | | res: "data", |
| | | }, |
| | | tip: "请上传 .xls,.xlsx 标准格式文件", |
| | | action: "/api/blade-user/import-user", |
| | | action: "/api/blade-user/import-user?deptId=" + this.deptIds, |
| | | }, |
| | | { |
| | | label: "模板下载", |
| | |
| | | propsHttp: { |
| | | res: "data", |
| | | }, |
| | | tip: "请上传 zip 压缩文件", |
| | | tip: "请上传 zip 压缩文件,照片文件名以身份证号码命名", |
| | | action: "/api/blade-resource/oss/endpoint/put-file-zip", |
| | | } |
| | | }, |
| | | ], |
| | | }, |
| | | |
| | | form: { |
| | | }, |
| | | form: {}, |
| | | search: {}, |
| | | roleBox: false, |
| | | excelBox: false, |
| | |
| | | }, |
| | | roleId: "1412226235153731586", |
| | | deptId: "1413470343230877697", |
| | | deptIds: "", |
| | | platformPage: { |
| | | pageSize: 10, |
| | | currentPage: 1, |
| | |
| | | searchMenuSpan: 6, |
| | | stripe: true, |
| | | border: true, |
| | | delBtn: false, |
| | | |
| | | delBtn: true, |
| | | align: "center", |
| | | index: true, |
| | | delBtnText: "注销", |
| | | menuWidth: 271, |
| | | menuWidth: 327, |
| | | selection: true, |
| | | viewBtn: true, |
| | | defaultExpandAll: true, |
| | |
| | | ], |
| | | }, |
| | | { |
| | | 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: [ |
| | |
| | | }, |
| | | ], |
| | | }, |
| | | { |
| | | label: "昵称", |
| | | prop: "name", |
| | | }, |
| | | { |
| | | label: "个人照片", |
| | | type: "upload", |
| | | listType: "picture-img", |
| | | propsHttp: { |
| | | res: "data", |
| | | url: "link", |
| | | }, |
| | | canvasOption: { |
| | | text: " ", |
| | | ratio: 0.1, |
| | | }, |
| | | action: "/api/blade-resource/oss/endpoint/put-file", |
| | | tip: "只能上传jpg/png个人头像,且不超过500kb", |
| | | span: 12, |
| | | row: true, |
| | | prop: "avatar", |
| | | }, |
| | | { |
| | | label: "是否持证", |
| | | prop: "hold", |
| | | dicUrl: "/api/blade-system/dict-biz/dictionary?code=equipage", |
| | | props: { |
| | | label: "dictValue", |
| | | value: "dictKey", |
| | | }, |
| | | type: "select", |
| | | rules: [ |
| | | { |
| | | required: true, |
| | | message: "请选择", |
| | | trigger: "blur", |
| | | }, |
| | | ], |
| | | }, |
| | | { |
| | | label: "保安员证编号", |
| | | prop: "securitynumber", |
| | | hide: true, |
| | | }, |
| | | // { |
| | | // 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: "cardid", |
| | |
| | | { |
| | | required: true, |
| | | message: "请输入身份证号", |
| | | trigger: "blur", |
| | | }, |
| | | { |
| | | required: true, |
| | | validator: validatePassCardid, |
| | | trigger: "blur", |
| | | }, |
| | | ], |
| | |
| | | message: "请输入手机号", |
| | | trigger: "blur", |
| | | }, |
| | | { |
| | | required: true, |
| | | validator: validatePassPhone, |
| | | trigger: "blur", |
| | | }, |
| | | ], |
| | | }, |
| | | // { |
| | | // label: "昵称", |
| | | // prop: "name", |
| | | // }, |
| | | { |
| | | label: "个人照片", |
| | | type: "upload", |
| | | listType: "picture-img", |
| | | propsHttp: { |
| | | res: "data", |
| | | url: "url", |
| | | }, |
| | | canvasOption: { |
| | | text: " ", |
| | | ratio: 0.1, |
| | | }, |
| | | action: "/api/blade-resource/oss/endpoint/put-files", |
| | | tip: "上传二代身份证一寸近期彩色正面免冠图象, (358像素(宽) × 441像素(高)、分辨率350dpi)且不超过500kb", |
| | | span: 12, |
| | | // row: true, |
| | | prop: "avatar", |
| | | }, |
| | | { |
| | | label: "指纹信息", |
| | | type: "upload", |
| | | listType: "picture-img", |
| | | propsHttp: { |
| | | res: "data", |
| | | url: "url", |
| | | }, |
| | | canvasOption: { |
| | | text: " ", |
| | | ratio: 0.1, |
| | | }, |
| | | action: "/api/blade-resource/oss/endpoint/put-files", |
| | | tip: "只能上传jpg/png指纹信息,且不超过500kb", |
| | | span: 12, |
| | | // row: true, |
| | | prop: "fingerprint", |
| | | }, |
| | | { |
| | | label: "是否持证", |
| | | prop: "hold", |
| | | // dicUrl: "/api/blade-system/dict-biz/dictionary?code=equipage", |
| | | // props: { |
| | | // label: "dictValue", |
| | | // value: "dictKey", |
| | | // }, |
| | | type: "select", |
| | | dicData: [ |
| | | { |
| | | label: "是", |
| | | value: "1", |
| | | }, |
| | | { |
| | | label: "否", |
| | | value: "2", |
| | | }, |
| | | { |
| | | label: "已吊销", |
| | | value: "3", |
| | | }, |
| | | ], |
| | | rules: [ |
| | | { |
| | | required: true, |
| | | message: "请选择", |
| | | trigger: "blur", |
| | | }, |
| | | ], |
| | | }, |
| | | { |
| | | label: "保安员证编号", |
| | | prop: "securitynumber", |
| | | hide: true, |
| | | }, |
| | | // { |
| | | // label: "发证日期", |
| | | // prop: "paperTime", |
| | | // hide: true, |
| | | // type: "date", |
| | | // format: "yyyy-MM-dd", |
| | | // valueFormat: "yyyy-MM-dd", |
| | | // }, |
| | | { |
| | | label: "电子邮箱", |
| | | prop: "email", |
| | |
| | | type: "date", |
| | | format: "yyyy-MM-dd", |
| | | valueFormat: "yyyy-MM-dd", |
| | | rules: [ |
| | | { |
| | | required: true, |
| | | message: "请输入入职时间", |
| | | trigger: "click", |
| | | }, |
| | | ], |
| | | }, |
| | | { |
| | | label: "性别", |
| | |
| | | // label: "未知", |
| | | // value: 3, |
| | | // }, |
| | | ], |
| | | rules: [ |
| | | { |
| | | required: true, |
| | | message: "请选择性别", |
| | | trigger: "blur", |
| | | }, |
| | | ], |
| | | }, |
| | | // { |
| | |
| | | if (!website.tenantMode) { |
| | | this.initData(website.tenantId); |
| | | } |
| | | console.log(this.search,111); |
| | | this.search['status'] = 1; |
| | | console.log(this.search, 111); |
| | | this.search["status"] = 1; |
| | | this.deptIds = this.userInfo.dept_id; |
| | | }, |
| | | methods: { |
| | | handleImport1() { |
| | |
| | | row.postId = row.postId.join(","); |
| | | } |
| | | |
| | | const user = { |
| | | account: row.account, |
| | | address: row.address, |
| | | birthday: row.birthday, |
| | | cardid: row.cardid, |
| | | deptId: row.deptId, |
| | | education: row.education, |
| | | email: row.email, |
| | | height: row.height, |
| | | hold: row.hold, |
| | | jurisdiction: row.jurisdiction, |
| | | myPicture: row.myPicture, |
| | | name: row.name, |
| | | nation: row.nation, |
| | | nativeplace: row.nativeplace, |
| | | password: row.password, |
| | | password2: row.password2, |
| | | phone: row.phone, |
| | | politicaloutlook: row.politicaloutlook, |
| | | realName: row.realName, |
| | | registered: row.registered, |
| | | rtime: row.rtime, |
| | | securitynumber: row.securitynumber, |
| | | sex: row.sex, |
| | | }; |
| | | const userMap = { |
| | | user: user |
| | | user: { |
| | | account: row.account, |
| | | avatar: row.avatar, |
| | | fingerprint: row.fingerprint, |
| | | healstats: row.healstats, |
| | | address: row.address, |
| | | birthday: row.birthday, |
| | | cardid: row.cardid, |
| | | deptId: row.deptId, |
| | | education: row.education1, |
| | | email: row.email, |
| | | height: row.height, |
| | | hold: row.hold, |
| | | jurisdiction: row.jurisdiction, |
| | | myPicture: row.myPicture, |
| | | name: row.name, |
| | | nation: row.nation, |
| | | nativeplace: row.nativeplace, |
| | | password: row.password, |
| | | password2: row.password2, |
| | | phone: row.phone, |
| | | politicaloutlook: row.politicaloutlook, |
| | | realName: row.realName, |
| | | registered: row.registered, |
| | | rtime: row.rtime, |
| | | securitynumber: row.securitynumber, |
| | | sex: row.sex, |
| | | }, |
| | | }; |
| | | |
| | | securitySave(userMap).then( |
| | | () => { |
| | | this.initFlag = false; |
| | | this.$alert("账号为身份证号码,密码为身份证后六位", "温馨提示", { |
| | | confirmButtonText: "确定", |
| | | callback: (action) => { |
| | | this.$message({ |
| | | type: "success", |
| | | message: `操作成功`, |
| | | }); |
| | | this.onLoad(this.page); |
| | | done(); |
| | | }, |
| | | }); |
| | | }, |
| | | (error) => { |
| | | window.console.log(error); |
| | | loading(); |
| | | } |
| | | ); |
| | | }, |
| | | rowUpdate(row, index, done, loading) { |
| | | row.deptId = row.deptId; |
| | | row.roleId = row.roleId.join(","); |
| | | row.postId = row.postId.join(","); |
| | | //值替换,education 放在页面会卡死 |
| | | row.education = row.education1; |
| | | update(row).then( |
| | | () => { |
| | | this.initFlag = false; |
| | | this.onLoad(this.page); |
| | |
| | | } |
| | | ); |
| | | }, |
| | | rowUpdate(row, index, done, loading) { |
| | | row.deptId = row.deptId; |
| | | row.roleId = row.roleId.join(","); |
| | | row.postId = row.postId.join(","); |
| | | //值替换,education 放在页面会卡死 |
| | | row.education = row.education1; |
| | | update(row).then(() => { |
| | | this.initFlag = false; |
| | | this.onLoad(this.page); |
| | | this.$message({ |
| | | type: "success", |
| | | message: "操作成功!", |
| | | }); |
| | | done(); |
| | | }, |
| | | (error) => { |
| | | window.console.log(error); |
| | | loading(); |
| | | rowDellook(row) { |
| | | // console.log(row.reasonForLeav); |
| | | this.$alert( |
| | | row.reasonForLeav == "" ? "未填写" : row.reasonForLeav, |
| | | "离职原因", |
| | | { |
| | | confirmButtonText: "确定", |
| | | callback: (action) => {}, |
| | | } |
| | | ); |
| | | }, |
| | | rowStatus(row) { |
| | | this.$prompt("离职原因", "提示", { |
| | | confirmButtonText: "确定离职", |
| | | cancelButtonText: "取消", |
| | | inputErrorMessage: "", |
| | | }) |
| | | .then(({ value }) => { |
| | | console.log(value); |
| | | row.reasonForLeav = value; |
| | | row.status = "2"; |
| | | // console.log(update); |
| | | // return; |
| | | update(row).then((res) => { |
| | | this.$message({ |
| | | type: "success", |
| | | message: "操作成功", |
| | | }); |
| | | }); |
| | | this.refreshChange(); |
| | | }) |
| | | .catch(() => {}); |
| | | }, |
| | | rowDel(row) { |
| | | this.$confirm("确定将选择保安登记离职?", { |
| | | this.$confirm("确定注销当前用户?", { |
| | | confirmButtonText: "确定", |
| | | cancelButtonText: "取消", |
| | | type: "warning", |
| | | }) |
| | | .then(() => { |
| | | row.status = "2"; |
| | | return update(row); |
| | | return remove(row.id); |
| | | }) |
| | | .then(() => { |
| | | this.onLoad(this.page); |
| | |
| | | roleIds.forEach((roleId) => { |
| | | getRoleDetail(roleId).then((res) => { |
| | | var roleAlias = res.data.data.roleAlias; |
| | | if ( |
| | | roleAlias == "保安公司管理员" || |
| | | roleAlias == "保安" |
| | | ) { |
| | | if (roleAlias == "保安公司管理员" || roleAlias == "保安") { |
| | | //去除保安公司查询 |
| | | const column = that.findObject(that.option.column, "deptId"); |
| | | column.search = false; |
| | |
| | | that.isSecurity = false; |
| | | //如果是保安公司管理员 |
| | | params["deptId"] = that.userInfo.dept_id; |
| | | |
| | | //导入action 修改 |
| | | const importColumn = that.findObject( |
| | | that.excelOption1.column, |
| | | "excelFile" |
| | | ); |
| | | importColumn.action = |
| | | "/api/blade-user/import-user?deptId=" + this.deptIds; |
| | | } else if (roleAlias == "公安管理员") { |
| | | params["jurisdiction"] = that.userInfo.jurisdiction; |
| | | var columnDept = that.findObject(that.option.column, "deptId"); |