1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
  | <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> 
 |  
  |