使用element ui添加一个用户管理的页面一条用户数据包含的字段有用户姓名、电话、邮箱、地址。需要在页面上呈现用户管理数据列表并且完成用户数据的增删改查以及数据分页的处理过程。用户数据存储在内存中。
下面是使用element ui实现用户管理页面的步骤:
- 安装element ui
npm install element-ui --save
- 引入element ui
在main.js中添加以下代码:
import Vue from 'vue'
import ElementUI from 'element-ui'
import 'element-ui/lib/theme-chalk/index.css'
Vue.use(ElementUI)
- 编写用户管理页面
在src/views目录下创建UserManage.vue文件,添加以下代码:
<template>
<div>
<el-form :inline="true" :model="searchForm" class="search-form">
<el-form-item label="姓名">
<el-input v-model="searchForm.name"></el-input>
</el-form-item>
<el-form-item label="电话">
<el-input v-model="searchForm.phone"></el-input>
</el-form-item>
<el-form-item label="邮箱">
<el-input v-model="searchForm.email"></el-input>
</el-form-item>
<el-form-item label="地址">
<el-input v-model="searchForm.address"></el-input>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="handleSearch">查询</el-button>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="handleAdd">添加</el-button>
</el-form-item>
</el-form>
<el-table :data="tableData" style="width: 100%" stripe>
<el-table-column prop="name" label="姓名"></el-table-column>
<el-table-column prop="phone" label="电话"></el-table-column>
<el-table-column prop="email" label="邮箱"></el-table-column>
<el-table-column prop="address" label="地址"></el-table-column>
<el-table-column label="操作">
<template slot-scope="scope">
<el-button type="text" @click="handleEdit(scope.$index)">编辑</el-button>
<el-button type="text" @click="handleDelete(scope.$index)">删除</el-button>
</template>
</el-table-column>
</el-table>
<el-pagination
:current-page="currentPage"
:page-size="pageSize"
:total="total"
@current-change="handleCurrentChange"
layout="prev, pager, next"
style="margin-top: 20px"
></el-pagination>
<el-dialog :visible.sync="dialogVisible" title="用户信息">
<el-form :model="formData" label-width="80px">
<el-form-item label="姓名">
<el-input v-model="formData.name"></el-input>
</el-form-item>
<el-form-item label="电话">
<el-input v-model="formData.phone"></el-input>
</el-form-item>
<el-form-item label="邮箱">
<el-input v-model="formData.email"></el-input>
</el-form-item>
<el-form-item label="地址">
<el-input v-model="formData.address"></el-input>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="dialogVisible = false">取消</el-button>
<el-button type="primary" @click="handleSave">保存</el-button>
</div>
</el-dialog>
</div>
</template>
<script>
export default {
data() {
return {
tableData: [], // 表格数据
currentPage: 1, // 当前页码
pageSize: 10, // 每页显示条数
total: 0, // 总条数
searchForm: { // 查询表单数据
name: '',
phone: '',
email: '',
address: ''
},
formData: { // 编辑表单数据
name: '',
phone: '',
email: '',
address: ''
},
dialogVisible: false // 编辑弹窗是否可见
}
},
mounted() {
this.getTableData()
},
methods: {
// 获取表格数据
getTableData() {
// 这里使用假数据
let data = [
{ name: '张三', phone: '13888888888', email: 'zhangsan@qq.com', address: '北京市海淀区' },
{ name: '李四', phone: '13999999999', email: 'lisi@qq.com', address: '上海市浦东新区' },
{ name: '王五', phone: '13666666666', email: 'wangwu@qq.com', address: '广州市天河区' }
]
this.tableData = data
this.total = data.length
},
// 查询
handleSearch() {
console.log(this.searchForm)
},
// 添加
handleAdd() {
this.formData = { name: '', phone: '', email: '', address: '' }
this.dialogVisible = true
},
// 编辑
handleEdit(index) {
let data = this.tableData[index]
this.formData = { ...data }
this.dialogVisible = true
},
// 删除
handleDelete(index) {
this.tableData.splice(index, 1)
this.total--
},
// 保存
handleSave() {
if (this.formData.name === '') {
this.$message.error('请输入姓名')
return
}
if (this.formData.phone === '') {
this.$message.error('请输入电话')
return
}
if (this.formData.email === '') {
this.$message.error('请输入邮箱')
return
}
if (this.formData.address === '') {
this.$message.error('请输入地址')
return
}
if (this.tableData.findIndex(item => item.name === this.formData.name && item.phone === this.formData.phone) !== -1) {
this.$message.error('该用户已存在')
return
}
if (this.dialogVisible) {
this.tableData.push(this.formData)
this.total++
} else {
let index = this.tableData.findIndex(item => item.name === this.formData.name && item.phone === this.formData.phone)
this.tableData.splice(index, 1, this.formData)
}
this.dialogVisible = false
},
// 分页
handleCurrentChange(val) {
this.currentPage = val
}
}
}
</script>
<style scoped>
.search-form {
margin-bottom: 20px;
}
</style>
- 运行项目
npm run serve
打开浏览器访问http://localhost:8080/user-manage即可看到用户管理页面。
原文地址: https://www.cveoy.top/t/topic/bKws 著作权归作者所有。请勿转载和采集!