New file |
| | |
| | | <template> |
| | | <div id="addUser" v-loading="isLoging"> |
| | | <el-dialog |
| | | title="添加用户" |
| | | width="40%" |
| | | top="2rem" |
| | | :close-on-click-modal="false" |
| | | :visible.sync="showDialog" |
| | | :destroy-on-close="true" |
| | | @close="close()" |
| | | > |
| | | <div id="shared" style="margin-right: 20px;"> |
| | | <el-form ref="passwordForm" :rules="rules" status-icon label-width="80px"> |
| | | <el-form-item label="用户名" prop="username"> |
| | | <el-input v-model="username" autocomplete="off"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="用户类型" prop="roleId" > |
| | | <el-select v-model="roleId" placeholder="请选择" style="width: 100%"> |
| | | <el-option |
| | | v-for="item in options" |
| | | :key="item.id" |
| | | :label="item.name" |
| | | :value="item.id"> |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="密码" prop="password"> |
| | | <el-input v-model="password" autocomplete="off"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="确认密码" prop="confirmPassword"> |
| | | <el-input v-model="confirmPassword" autocomplete="off"></el-input> |
| | | </el-form-item> |
| | | |
| | | <el-form-item> |
| | | <div style="float: right;"> |
| | | <el-button type="primary" @click="onSubmit">保存</el-button> |
| | | <el-button @click="close">取消</el-button> |
| | | </div> |
| | | </el-form-item> |
| | | </el-form> |
| | | </div> |
| | | </el-dialog> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | |
| | | export default { |
| | | name: "addUser", |
| | | props: {}, |
| | | computed: {}, |
| | | created() { |
| | | this.getAllRole(); |
| | | }, |
| | | data() { |
| | | let validatePass1 = (rule, value, callback) => { |
| | | if (value === '') { |
| | | callback(new Error('请输入新密码')); |
| | | } else { |
| | | if (this.confirmPassword !== '') { |
| | | this.$refs.passwordForm.validateField('confirmPassword'); |
| | | } |
| | | callback(); |
| | | } |
| | | }; |
| | | let validatePass2 = (rule, value, callback) => { |
| | | if (this.confirmPassword === '') { |
| | | callback(new Error('请再次输入密码')); |
| | | } else if (this.confirmPassword !== this.password) { |
| | | callback(new Error('两次输入密码不一致!')); |
| | | } else { |
| | | callback(); |
| | | } |
| | | }; |
| | | return { |
| | | value:"", |
| | | options: [], |
| | | loading: false, |
| | | username: null, |
| | | password: null, |
| | | roleId: null, |
| | | confirmPassword: null, |
| | | listChangeCallback: null, |
| | | showDialog: false, |
| | | isLoging: false, |
| | | rules: { |
| | | newPassword: [{required: true, validator: validatePass1, trigger: "blur"}, { |
| | | pattern: /^(?=.*[a-zA-Z])(?=.*\d)(?=.*[~!@#$%^&*()_+`\-={}:";'<>?,.\/]).{8,20}$/, |
| | | message: "密码长度在8-20位之间,由字母+数字+特殊字符组成", |
| | | },], |
| | | confirmPassword: [{required: true, validator: validatePass2, trigger: "blur"}], |
| | | }, |
| | | }; |
| | | }, |
| | | methods: { |
| | | openDialog: function (callback) { |
| | | this.listChangeCallback = callback; |
| | | this.showDialog = true; |
| | | }, |
| | | onSubmit: function () { |
| | | this.$axios({ |
| | | method: 'post', |
| | | url: "/api/user/add", |
| | | params: { |
| | | username: this.username, |
| | | password: this.password, |
| | | roleId: this.roleId |
| | | } |
| | | }).then((res) => { |
| | | if (res.data.code === 0) { |
| | | this.$message({ |
| | | showClose: true, |
| | | message: '添加成功', |
| | | type: 'success', |
| | | |
| | | }); |
| | | this.showDialog = false; |
| | | this.listChangeCallback() |
| | | |
| | | } else { |
| | | this.$message({ |
| | | showClose: true, |
| | | message: res.data.msg, |
| | | type: 'error' |
| | | }); |
| | | } |
| | | }).catch((error) => { |
| | | console.error(error) |
| | | }); |
| | | }, |
| | | close: function () { |
| | | this.showDialog = false; |
| | | this.password = null; |
| | | this.confirmPassword = null; |
| | | this.username = null; |
| | | this.roleId = null; |
| | | }, |
| | | getAllRole:function () { |
| | | |
| | | this.$axios({ |
| | | method: 'get', |
| | | url: "/api/role/all" |
| | | }).then((res) => { |
| | | this.loading = true; |
| | | if (res.data.code === 0) { |
| | | this.options=res.data.data |
| | | } |
| | | }).catch((error) => { |
| | | console.error(error) |
| | | }); |
| | | } |
| | | }, |
| | | }; |
| | | </script> |