| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154 |
- <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>
|