阅读 51

tablePage是一个可以帮助快速开发后台管理系统表格的组件

首先先来看看怎么使用

tablePage的使用非常简单高效,只要把tablePage组件和tablePageJs引入,对tablepage进行组件注册,然后混入tablePageJs。

import TablePage from "../../TablePage/TablePage.vue"; import TablePageJs from "../../TablePage/TablePage.js"; components: { TablePage }, mixins: [TablePageJs], 复制代码

      :data="tableListData"       :filter="filter"       @tableSelectionChange="tableSelectionChange"       @search="search"       @resetSearch="resetSearch"       @sizeChange="sizeChange"       @currentChange="currentChange"       @sortChange="sortChange"       ref="table"       id="taskTable"       @setTableKeys="setTableKeys"       @selectAll="tableSelectAllStatus"       :searchForm="searchForm"     />```     ```tableListData: {         selection: true,          columnFunctionsWidth: 120,         tableData: [           {             deviceUid: 1,             deviceName: "deviceName",             commandId: 2,           },         ],         tableKeys: [           {             id: "deviceUid",             label: "设备UID",             width: "200",             allways: true,           },         ],         tableFunctions: [           {             label: "按钮",             method: (scope) => {               alert("按钮");             },             disabled: (scope) => {               return true;             },           },           },         ],       },     ```     主要的一些props     data:主要是传入表格的一些功能和数据的控制     tableListData中:         selection控制表格前面的选择按钮         columnFunctionsWidth控制列宽         tableData控制展示的数据,将后端获取到的数据放入         tableKeys表格对应字段的值 id为字段名 label为表头名           tableFunctions表格操作栏     filter:主要是控制表格的模糊查询以及分页查询     tableSelectionChange:存储选中项数组     search:根据filter中的条件进行查询     resetSearch:将filter中的条件置为初始定义的值并且重新发送请求     sizeChange:改变fitler中的pageSize并且pageNum置为1并且重新发送请求     currentChange:改变fitler中的pageNum并且重新发送请求     sortChange:根据filter中sortOrder排序条件重新发送请求     setTableKeys:表头改变时,记录用户操作     selectAll:选中所有数据     以上的自定义事件在tablePageJs中定义了     searchForm中:       formDesc:用于描述表单输入的字段         type:输入框类型 如 input select ...         label:输入框的label         attrs:元素上的属性 TablePage.js做了什么 1 data中定义 ``` data () {     return {       multiData: [],       tableSelectAll: false,       filter: {         pageSize: 10, // 每页条数         pageNum: 1, // 当前页         rowTotal: null, // 总条数         sortName: '',         sortOrder: '',         pageSizes: [10, 20, 50, 100]       },       cacheInit: false     }   }, 复制代码

multiData:选中的数据 tableSelectAll:是否全选 filtert:condiction是模糊的条件,其他字段为分页查询条件 cacheInit:是否是第一次缓存

2 watch中定义

      async handler (val, oldval) {         // 限制只获取一次缓存         if (this.cacheInit) {           return         }       },       immediate: true,       deep: true     } 复制代码

监听tbaleListData中的tableKeys,如果已经不是第一次了就直接return

3 methods中定义,大部分都是使用组件的时候监听的事件 tableSelectionChange:存储选中项数组 search:根据filter中的条件进行查询 resetSearch:将filter中的条件置为初始定义的值并且重新发送请求 sizeChange:改变fitler中的pageSize并且pageNum置为1并且重新发送请求 currentChange:改变fitler中的pageNum并且重新发送请求 sortChange:根据filter中sortOrder排序条件重新发送请求 setTableKeys:表头改变时,记录用户操作 selectAll:选中所有数据

接下来就看看tablePage组件中的代码 我觉得比较重要的一些 搜索栏模块  让用户自定义传入搜索模块 额外的搜索控制栏  让用户自定义传入额外的搜索控制栏 控制栏 主要是选中 全选 等方法

列表模块 使用el-table然后再data中绑定tableData 1 使用data中selection属性判断是否要表格前面的选择框 2 循环tableKeys数组实现数据列 3 中也提供了插槽name为column_${item.id},判断tableKeys数组对象中是否又formatter,如果有调用formatter传入scope.row,无则直接rowValue函数,可以为表格中空的字段做一些处理 4 tableFunctions对操作列进行显示控制,如果tableFunctions.length大于4给他更多的按钮并隐藏大于4的其他操作,对于操作就是循环tableFunctions数组click时触发对象中的method方法并且渲染对象的label

最后底部模块就是一个分页器通过pagination来控制显示隐藏,同时使用了传入的filter对象中的属性进行控制

tablePage中script的实现 props模块

props: {     // 布局显示隐藏     layout: {       type: Array,       default: layoutList,     },     // 表格数据     data: {       type: Object,       require: true,     },     // 页码和数据条数     filter: {       type: Object,     },     // 表格名称     pageName: {       type: String,     },     //  表格ID,用于记录表格操作的唯一标识     id: {       type: String,       default: "tablepage",     },     // 表格自定义样式     customClass: {       type: String,       default: "",     },     // 是否显示加载中     loading: {       type: Boolean,       default: false,     },     // 表格高度     height: {       type: String,     },   }, 复制代码

data中的数据

  data() {     return {       tableKeys: [], // 表格列是否显示       tableData: [], // 表格数据       tableIndex: null, // 表格自定义排序       multiData: [], // 多选数据       selectAll: false, // 是否全选       maxHeight: 1000, // 表格最大高度,不超过页面高度     };   }, 复制代码

watch中的实现 selectAll data.tableData data.tableKeys对着三个变量进行watch


作者:用户7866379816645
链接:https://juejin.cn/post/7169850931192807431

文章分类
代码人生
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐