<template> <el-dialog v-loading="loading" :visible.sync="dialogFormVisible" title="密码设置" append-to-body @close="cancel"> <el-form ref="dataForm" :rules="rules" :model="form" label-well-code="right" label-width="100px"> <el-row :gutter="20"> <el-col :span="24"> <el-form-item label="是否启用密码"> <el-switch v-model="form.needPwd" :active-value="1" :inactive-value="0" active-color="#13ce66" inactive-color="#ff4949"> </el-switch> </el-form-item> </el-col> <el-col :span="24" v-if="form.needPwd + '' === '1'"> <el-form-item label="密码模式" prop="pwdMode"> <el-select v-model="form.pwdMode" placeholder="请选择" clearable> <el-option v-for="item in pwdModeList" :key="item.id" :label="item.label" :value="item.value"/> </el-select> </el-form-item> </el-col> <el-col :span="24" v-if="form.needPwd + '' === '1'"> <el-form-item label="密码" prop="pwd"> <el-input v-model.trim="form.pwd" show-password placeholder="必填"/> </el-form-item> </el-col> </el-row> </el-form> <div slot="footer" class="dialog-footer"> <el-button type="primary" @click="confirm">确定</el-button> <el-button @click="cancel">取消</el-button> </div> </el-dialog> </template> <script> import DeptSelect from '../../components/DeptSelect/index' import { RSAencrypt } from '@/utils/security' import { setPwd } from '@/api/door' const validatePass = (rule, value, callback) => { const testValue = value + '' console.log('验证密码') if (testValue === '') { callback(new Error('密码不能为空')) } else { var reg = /^0+$/g if (reg.test(testValue)) { callback(new Error('密码不能全为0')) } if(value.length !== 6) { callback(new Error('密码长度为6位')) } callback() } } export default { name: 'DetailGroup', components: { DeptSelect }, data() { return { pwdModeList: [ // 密码模式 { id: '0', label: '刷卡 + 密码', value: 0 }, { id: '1', label: '刷卡 / 密码', value: 1 } ], dialogFormVisible: false, // 对话框是否显示 loading: false, // loading form: { needPwd: 0, //是否启用密码 pwdMode: '', //密码模式 pwd: '', //密码 }, rules: { pwdMode: [{ required: true, message: '密码模式不能为空', trigger: ['blur', 'change'] }], pwd: [{ required: true, validator: validatePass, trigger: ['blur', 'change'] }], }, // 前端校验规则 doorIds: [], // 门禁id列表 } }, mounted() { }, methods: { // 初始化对话框 initDialog: function(multipleSelection = []) { this.resetForm() this.dialogFormVisible = true this.doorIds = multipleSelection.map(item => item.id) // 门禁id列; // 门禁id列表 if(multipleSelection.length === 1 && multipleSelection[0].needPwd === 1) { // 对单个门禁进行修改--初始化 this.form.needPwd = multipleSelection[0].needPwd | 0 //是否启用密码 this.form.pwdMode = multipleSelection[0].pwdMode | '' //密码模式 } }, // 确定 confirm: function() { this.$refs['dataForm'].validate((valid) => { if (valid) { this.loading = true let params if(this.form.needPwd + '' === '1') { // 启用密码 const password = this.form.pwd !== '' ? RSAencrypt(this.form.pwd) : '' params = { doorIds: this.doorIds, needPwd: this.form.needPwd, //是否启用密码 pwdMode: this.form.pwdMode, //密码模式 pwd: password, //密码 } } else { params = { doorIds: this.doorIds, needPwd: this.form.needPwd, //是否启用密码 } } setPwd(params).then(response => { if (response.code === 200) { this.$message.success(response.data) this.loading = false this.dialogFormVisible = false this.$emit('refresh') } }).catch(() => { this.loading = false }) } }) }, // 重置表单 resetForm() { this.form = { needPwd: 0, //是否启用密码 pwdMode: '', //密码模式 pwd: '', //密码 } }, // 取消 cancel: function() { this.dialogFormVisible = false }, } } </script> <style rel="stylesheet/scss" lang="scss" scoped> </style>