用vue3和elementUI写一个完整的条件查询功能,其中table包含页码,请写出代码
时间: 2024-03-27 11:37:53 浏览: 140
好的,以下是一个基于Vue3和ElementUI的条件查询功能的示例代码,其中包含一个带有分页的表格:
```html
<template>
<div>
<el-form :inline="true" :model="form" class="search-form">
<el-form-item label="姓名">
<el-input v-model="form.name" placeholder="请输入姓名"></el-input>
</el-form-item>
<el-form-item label="年龄">
<el-input-number v-model="form.age" controls-position="right" placeholder="请输入年龄"></el-input-number>
</el-form-item>
<el-form-item label="性别">
<el-radio-group v-model="form.gender">
<el-radio label="male">男</el-radio>
<el-radio label="female">女</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="search">查询</el-button>
</el-form-item>
</el-form>
<el-table :data="tableData" stripe>
<el-table-column prop="name" label="姓名"></el-table-column>
<el-table-column prop="age" label="年龄"></el-table-column>
<el-table-column prop="gender" label="性别"></el-table-column>
</el-table>
<el-pagination
v-if="total > 0"
:total="total"
:page-size="pageSize"
:current-page.sync="currentPage"
@current-change="handlePageChange"
/>
</div>
</template>
<script>
import { reactive, toRefs } from 'vue'
import { ElForm, ElFormItem, ElInput, ElInputNumber, ElRadioGroup, ElRadio, ElButton, ElTable, ElTableColumn, ElPagination } from 'element-plus'
export default {
components: { ElForm, ElFormItem, ElInput, ElInputNumber, ElRadioGroup, ElRadio, ElButton, ElTable, ElTableColumn, ElPagination },
setup() {
const form = reactive({
name: '',
age: '',
gender: ''
})
const tableData = reactive([])
const total = reactive(0)
const currentPage = reactive(1)
const pageSize = reactive(10)
const search = () => {
// 发送查询请求,获取数据
// ...
// 更新表格数据和总记录数
tableData.value = []
total.value = 0
}
const handlePageChange = (page) => {
currentPage.value = page
search()
}
return {
...toRefs(form),
tableData,
total,
currentPage,
pageSize,
search,
handlePageChange
}
}
}
</script>
```
在这个示例代码中,我们使用了ElementUI提供的表单和表格组件,同时使用了Vue3的响应式数据和组合式API。
在模板中,我们使用了`el-form`组件来实现条件查询表单,使用了`el-table`组件来展示查询结果表格,同时使用了`el-pagination`组件来实现分页。
在`setup`函数中,我们使用`reactive`函数创建了一个响应式的表单数据对象`form`,一个响应式的表格数据数组`tableData`,一个响应式的总记录数`total`,一个响应式的当前页码`currentPage`和一个响应式的每页记录数`pageSize`。
我们还定义了`search`函数来发送查询请求并更新表格数据和总记录数,在查询请求中需要使用`form`对象中的条件参数。
最后,我们通过`toRefs`函数将`form`对象转换为响应式的`ref`对象,使得在模板中能够使用`v-model`来双向绑定表单数据。并将所有响应式数据和函数暴露给模板使用。
阅读全文