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