diff --git a/doc/通用分页表格.md b/doc/通用分页表格.md
new file mode 100644
index 0000000..c98d30b
--- /dev/null
+++ b/doc/通用分页表格.md
@@ -0,0 +1,154 @@
+## 通用分页表格实现
+
+前端基于VUE的轻量级表格插件 `avue`
+后端分页组件使用Mybatis分页插件 `MybatisPlus`
+
+
+
+> 分页实现流程,以【系统管理-管理员列表】为例
+
+后台vue文件位置目录 `\src\views\modules\sys\user.vue`
+
+1、`avue`组件的几个通用配置
+
+```html
+
+
+```
+
+`avue`定义了很多的事件,其中一个为 `@on-load`当该组件加载的时候,将会调用该方法。同时也对很多数据进行了双向绑定如:`:page="page"` 分页参数、`:data="dataList"` 分页的具体列表数据、`:option="tableOption"` 表格显示的列
+
+
+
+2、通用的列表、搜索
+
+在`avue`规定,表格的构建,是通过JS对象,进行配置的,而不是通过dom,类似于传统的layui,还有一个主要的原因是这个表格,可以同时生成搜索、分页。
+
+```javascript
+import { tableOption } from '@/crud/sys/user'
+```
+
+
+
+我们查看下该类的代码:
+
+```javascript
+export const tableOption = {
+ border: true,
+ selection: true,
+ index: false,
+ indexLabel: '序号',
+ stripe: true,
+ menuAlign: 'center',
+ menuWidth: 350,
+ align: 'center',
+ refreshBtn: true,
+ searchSize: 'mini',
+ addBtn: false,
+ editBtn: false,
+ delBtn: false,
+ viewBtn: false,
+ props: {
+ label: 'label',
+ value: 'value'
+ },
+ column: [{
+ label: '用户名',
+ prop: 'username',
+ search: true
+ }, {
+ label: '邮箱',
+ prop: 'email'
+ }, {
+ label: '手机号',
+ prop: 'mobile'
+ }, {
+ label: '创建时间',
+ prop: 'createTime'
+ }, {
+ label: '状态',
+ prop: 'status',
+ type: 'select',
+ dicData: [
+ {
+ label: '禁用',
+ value: 0
+ }, {
+ label: '正常',
+ value: 1
+ }
+ ]
+
+ }]
+}
+```
+
+这里的 `search: true` 也就是搜索框出现用户名搜索
+
+```javascript
+{
+ label: '用户名',
+ prop: 'username',
+ search: true
+}
+```
+
+具体可以通过[avue官网-crud文档](https://avuejs.com/doc/crud/crud-doc)获取文档进行查询
+
+
+
+3、 通用的搜索和加载
+
+```javascript
+getDataList (page, params) {
+ this.dataListLoading = true
+ this.$http({
+ url: this.$http.adornUrl('/sys/user/page'),
+ method: 'get',
+ params: this.$http.adornParams(
+ Object.assign(
+ {
+ current: page == null ? this.page.currentPage : page.currentPage,
+ size: page == null ? this.page.pageSize : page.pageSize
+ },
+ params
+ )
+ )
+ }).then(({ data }) => {
+ this.dataList = data.records
+ this.page.total = data.total
+ this.dataListLoading = false
+ })
+}
+```
+
+
+
+4、服务端`SysUserController`
+
+```java
+@RestController
+@RequestMapping("/sys/user")
+public class SysUserController {
+ @Autowired
+ private SysUserService sysUserService;
+ /**
+ * 所有用户列表
+ */
+ @GetMapping("/page")
+ @PreAuthorize("@pms.hasPermission('sys:user:page')")
+ public ResponseEntity> page(String username,PageParam page){
+ IPage sysUserPage = sysUserService.page(page, new LambdaQueryWrapper()
+ .eq(SysUser::getShopId, SecurityUtils.getSysUser().getShopId())
+ .like(StrUtil.isNotBlank(username), SysUser::getUsername, username));
+
+ return ResponseEntity.ok(sysUserPage);
+ }
+}
+```