1 <template>
2 <div>
3 <el-button style="float:left;margin-left:20px;" type="primary" @click="add_dialogVisible = true"
4 >新增用户</el-button
5 >
6 <el-table
7 :data="getSearchInfo.slice((currpage - 1) * pageSize, currpage * pageSize)"
8 style="width: 100%"
9 >
10 <template v-for="(item, index) in user_data_title">
11 <el-table-column :prop="item.prop" :label="item.label" align="center" :key="index">
12 </el-table-column>
13 </template>
14 <el-table-column align="center">
15 <template slot="header" slot-scope="scope">
16 <el-input v-model="search" size="mini" placeholder="输入关键字搜索" />
17 </template>
18 <template slot-scope="scope">
19 <el-button size="mini" plain type="primary" @click="handleEdit(scope.row)">编辑</el-button>
20 <el-button size="mini" plain type="danger" @click="handleDelete(scope.row)">删除</el-button>
21 <el-button size="mini" plain type="warning" @click="handleChagePwd(scope.row)"
22 >修改密码</el-button
23 >
24 </template>
25 </el-table-column>
26 </el-table>
27 <el-pagination
28 background
29 :page-size="pageSize"
30 :page-sizes="[10, 20, 50]"
31 :current-page.sync="currentPage"
32 :total="getSearchInfo.length"
33 @size-change="handleSizeChange"
34 @current-change="handleCurrentChange"
35 layout="sizes, total, prev, pager, next, jumper"
36 >
37 </el-pagination>
38 <!-- 新增用户 -->
39 <div class="add_dialog">
40 <el-dialog
41 title="新增用户"
42 :visible.sync="add_dialogVisible"
43 :close-on-click-modal="false"
44 :close-on-press-escape="false"
45 :show-close="false"
46 width="500px"
47 >
48 <el-form>
49 <el-form-item label="用户名:">
50 <el-input
51 v-model.trim="add.user_name"
52 placeholder="请输入用户名"
53 autocomplete="off"
54 ></el-input>
55 </el-form-item>
56 <el-form-item label="密码:">
57 <el-input v-model.trim="add.password" placeholder="请输入密码" autocomplete="off"></el-input>
58 </el-form-item>
59 </el-form>
60 <span slot="footer" class="dialog-footer">
61 <el-button @click="cancel('add')">取 消</el-button>
62 <el-button type="primary" @click="add_determine">确 定</el-button>
63 </span>
64 </el-dialog>
65 </div>
66 <!-- 编辑用户 -->
67 <div class="edit_dialog">
68 <el-dialog
69 title="编辑用户"
70 :visible.sync="edit_dialogVisible"
71 :close-on-click-modal="false"
72 :close-on-press-escape="false"
73 :show-close="false"
74 width="500px"
75 >
76 <el-form>
77 <el-form-item label="用户名:">
78 <el-input
79 v-model.trim="edit.user_name"
80 placeholder="请输入用户名"
81 autocomplete="off"
82 ></el-input>
83 </el-form-item>
84 <el-form-item label="密码:">
85 <el-input v-model.trim="edit.password" placeholder="请输入密码" autocomplete="off"></el-input>
86 </el-form-item>
87 </el-form>
88 <span slot="footer" class="dialog-footer">
89 <el-button @click="cancel('edit')">取 消</el-button>
90 <el-button type="primary" @click="edit_determine">确 定</el-button>
91 </span>
92 </el-dialog>
93 </div>
94 <!-- 修改密码弹窗 -->
95 <div class="changePwd_dialog">
96 <el-dialog
97 :title="changeName"
98 :visible.sync="changePwd_dialogVisible"
99 :close-on-click-modal="false"
100 :close-on-press-escape="false"
101 :show-close="false"
102 width="500px"
103 >
104 <div>
105 <span :style="inlineStyle">修改密码:</span>
106 <el-input
107 :style="inlineStyle"
108 v-model.trim="change.new_pwd"
109 placeholder="请输入新密码"
110 ></el-input>
111 </div>
112 <span slot="footer" class="dialog-footer">
113 <el-button @click="cancel('changePwd')">取 消</el-button>
114 <el-button type="primary" @click="changePwd_determine">确 定</el-button>
115 </span>
116 </el-dialog>
117 </div>
118 </div>
119 </template>
120
121 <script>
122 export default {
123 name: 'UserManagement',
124 inject: ['reload'],
125 data() {
126 return {
127 add_dialogVisible: false,
128 edit_dialogVisible: false,
129 changePwd_dialogVisible: false,
130 user_data: [],
131 user_data_title: [
132 {
133 prop: 'name',
134 label: '用户名',
135 },
136 {
137 prop: 'password',
138 label: '密码',
139 },
140 {
141 prop: 'createTime',
142 label: '创建时间',
143 },
144 ],
145 search: '',
146 currpage: 1,
147 pageSize: 10,
148 currentPage: null,
149 add: {
150 // 新增用户
151 user_name: '',
152 password: '',
153 },
154 edit: {
155 // 编辑用户
156 user_name: '',
157 password: '',
158 },
159 changeName: '',
160 change: {
161 // 修改密码
162 new_pwd: '',
163 },
164 inlineStyle: {
165 // span和input在同一行
166 display: 'inline',
167 },
168 }
169 },
170 computed: {
171 getSearchInfo() {
172 // 搜索
173 let search = this.search
174 if (search) {
175 this.currpage = 1
176 this.currentPage = 1
177 return this.user_data.filter(data => {
178 return Object.keys(data).some(key => {
179 return (
180 String(data[key])
181 .toLowerCase()
182 .indexOf(search) > -1
183 )
184 })
185 })
186 }
187 return this.user_data
188 },
189 },
190 methods: {
191 get_user_data() {
192 this.user_data = []
193 let data = this.$mockjs.mock({
194 'user_data|20': [
195 {
196 user_id: '@natural',
197 name: '@cname',
198 password: '@word',
199 createTime: '@datetime',
200 },
201 ],
202 })
203 this.user_data = data.user_data
204 },
205 handleEdit(row) {
206 // 编辑
207 console.log(row)
208 this.edit.user_name = row.name
209 this.edit.password = row.password
210 this.edit_dialogVisible = true
211 },
212 edit_determine() {
213 // 提交编辑信息
214 console.log(this.edit)
215 },
216 handleDelete(row) {
217 // 删除
218 this.$confirm('此操作将永久删除该用户, 是否继续?', '提示', {
219 confirmButtonText: '确定',
220 cancelButtonText: '取消',
221 type: 'warning',
222 })
223 .then(() => {
224 this.$message({
225 type: 'success',
226 message: '删除成功!',
227 })
228 })
229 .catch(() => {
230 return false
231 })
232 },
233 handleChagePwd(row) {
234 // 修改密码
235 console.log(row)
236 this.changeName = row.name
237 this.changePwd_dialogVisible = true
238 },
239 changePwd_determine() {
240 // 提交新密码
241 console.log(this.change)
242 },
243 handleCurrentChange(cpage) {
244 // 点击页数
245 this.currpage = cpage
246 },
247 handleSizeChange(val) {
248 this.pageSize = val
249 },
250 add_determine() {
251 // 提交新用户信息
252 console.log(this.add)
253 },
254 cancel(data) {
255 // 取消
256 switch (data) {
257 case 'add':
258 this.add = {}
259 this.add_dialogVisible = false
260 break
261 case 'changePwd':
262 this.change = {}
263 this.changePwd_dialogVisible = false
264 break
265 default:
266 this.edit = {}
267 this.edit_dialogVisible = false
268 break
269 }
270 },
271 },
272 mounted() {
273 this.get_user_data()
274 },
275 }
276 </script>
277
278 <style scoped>
279 .edit_dialog /deep/ .el-dialog,
280 .add_dialog /deep/ .el-dialog,
281 .changePwd_dialog /deep/ .el-dialog {
282 border-radius: 15px;
283 }
284 .changePwd_dialog /deep/ .el-input__inner {
285 width: 300px;
286 }
287 </style>