前端vue3增删改查页面复杂页面功能
时间: 2023-08-10 18:38:51 浏览: 273
vue增删改查的简单操作
下面是一个较为复杂的前端Vue3增删改查页面模板,包含以下功能:
- 使用Element Plus组件库实现表格、表单、对话框等UI组件。
- 使用Vue Router实现路由跳转。
- 使用Vuex实现状态管理。
- 使用axios实现与后端API的交互。
```vue
<template>
<div>
<h1>用户列表</h1>
<el-table :data="users" border>
<el-table-column prop="id" label="ID"></el-table-column>
<el-table-column prop="name" label="姓名"></el-table-column>
<el-table-column prop="age" label="年龄"></el-table-column>
<el-table-column label="操作">
<template #default="{ row }">
<el-button @click="edit(row)">编辑</el-button>
<el-button type="danger" @click="remove(row.id)">删除</el-button>
</template>
</el-table-column>
</el-table>
<el-button @click="$router.push('/add')">添加用户</el-button>
<el-dialog :visible.sync="showEditDialog" title="编辑用户">
<el-form :model="editedUser" :rules="rules" ref="editForm">
<el-form-item label="姓名" prop="name">
<el-input v-model="editedUser.name"></el-input>
</el-form-item>
<el-form-item label="年龄" prop="age">
<el-input-number v-model.number="editedUser.age"></el-input-number>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="cancelEdit">取消</el-button>
<el-button type="primary" @click="save">保存</el-button>
</span>
</el-dialog>
<el-dialog :visible.sync="showAddDialog" title="添加用户">
<el-form :model="newUser" :rules="rules" ref="addForm">
<el-form-item label="姓名" prop="name">
<el-input v-model="newUser.name"></el-input>
</el-form-item>
<el-form-item label="年龄" prop="age">
<el-input-number v-model.number="newUser.age"></el-input-number>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="cancelAdd">取消</el-button>
<el-button type="primary" @click="addUser">保存</el-button>
</span>
</el-dialog>
</div>
</template>
<script>
import { computed, ref } from 'vue'
import { useRoute } from 'vue-router'
import { useStore } from 'vuex'
import axios from 'axios'
import { ElMessage } from 'element-plus'
export default {
setup() {
const store = useStore()
const route = useRoute()
const users = computed(() => store.state.users)
const showEditDialog = ref(false)
const showAddDialog = ref(false)
const editedUser = ref({})
const newUser = ref({})
const rules = {
name: [
{ required: true, message: '请输入姓名', trigger: 'blur' },
{ min: 2, max: 20, message: '长度在 2 到 20 个字符', trigger: 'blur' },
],
age: [
{ required: true, message: '请输入年龄', trigger: 'blur' },
{ type: 'number', message: '必须为数字', trigger: 'blur' },
{ min: 1, max: 120, message: '请输入有效的年龄', trigger: 'blur' },
],
}
function edit(user) {
editedUser.value = { ...user }
showEditDialog.value = true
}
function remove(userId) {
axios.delete(`/api/users/${userId}`)
.then(response => {
store.commit('removeUser', userId)
ElMessage.success(response.data.message)
})
.catch(error => {
ElMessage.error(error.response.data.message)
})
}
function save() {
const form = this.$refs.editForm
form.validate(valid => {
if (valid) {
axios.put(`/api/users/${editedUser.value.id}`, editedUser.value)
.then(response => {
store.commit('updateUser', response.data.user)
showEditDialog.value = false
ElMessage.success(response.data.message)
})
.catch(error => {
ElMessage.error(error.response.data.message)
})
}
})
}
function cancelEdit() {
showEditDialog.value = false
}
function addUser() {
const form = this.$refs.addForm
form.validate(valid => {
if (valid) {
axios.post('/api/users', newUser.value)
.then(response => {
store.commit('addUser', response.data.user)
showAddDialog.value = false
ElMessage.success(response.data.message)
})
.catch(error => {
ElMessage.error(error.response.data.message)
})
}
})
}
function cancelAdd() {
showAddDialog.value = false
}
return {
users,
showEditDialog,
showAddDialog,
editedUser,
newUser,
rules,
edit,
remove,
save,
cancelEdit,
addUser,
cancelAdd,
}
},
created() {
const userId = this.$route.params.id
if (userId) {
axios.get(`/api/users/${userId}`)
.then(response => {
this.editedUser = response.data.user
this.showEditDialog = true
})
.catch(error => {
ElMessage.error(error.response.data.message)
this.$router.push('/')
})
}
},
}
</script>
```
该模板的主要功能包括:
- 展示用户列表,使用Element Plus组件库的表格组件。
- 点击“编辑”按钮可以弹出编辑用户的对话框,使用Element Plus组件库的对话框和表单组件,支持表单验证。
- 点击“删除”按钮可以删除用户,使用axios发送DELETE请求到后端API,删除后更新Vuex中的状态。
- 点击“添加用户”按钮可以弹出添加用户的对话框,使用Element Plus组件库的对话框和表单组件,支持表单验证,使用axios发送POST请求到后端API,添加后更新Vuex中的状态。
- 使用Vue Router实现路由跳转,支持在编辑用户时从URL中获取用户ID。
- 使用Vuex实现状态管理,存储用户列表等状态。
- 使用axios实现与后端API的交互,处理API返回的数据,更新Vuex中的状态,并显示提示信息。
阅读全文