useTable.ts 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. import { reactive, toRefs } from 'vue'
  2. interface Pageable {
  3. pageNum: number
  4. pageSize: number
  5. total: number
  6. small: boolean
  7. disabled: boolean
  8. }
  9. interface Table {
  10. tableData: any[]
  11. pageable: Pageable
  12. searchParam: any
  13. searchInitParam: any
  14. totalParam: any
  15. }
  16. /**
  17. *
  18. * @param requestApi 请求接口
  19. * @param initParam 请求参数
  20. * @param isPagination 是否需要分页
  21. * @param dataCallback 对后台返回参数进行处理
  22. * @returns
  23. */
  24. export const useTable = (
  25. requestApi: (params: any) => Promise<any>,
  26. initParam: object = {},
  27. isPagination: boolean = true,
  28. dataCallback?: (data: any) => any
  29. ) => {
  30. const state = reactive<Table>({
  31. // 表格数据
  32. tableData: [],
  33. // 分页数据
  34. pageable: {
  35. // 当前页数
  36. pageNum: 1,
  37. // 每页显示条数
  38. pageSize: 10,
  39. // 总条数
  40. total: 0,
  41. small: false,
  42. disabled: false
  43. },
  44. // 查询参数(只包括查询)
  45. searchParam: {},
  46. // 初始化默认的查询参数
  47. searchInitParam: {},
  48. // 总参数(包含分页和查询参数)
  49. totalParam: {}
  50. })
  51. const getTableList = async () => {
  52. const params: any = {
  53. ...initParam,
  54. page: state.pageable.pageNum,
  55. page_z: state.pageable.pageSize
  56. }
  57. const res = await requestApi(params)
  58. dataCallback && dataCallback(res)
  59. state.tableData = res.Data.Data
  60. state.pageable.total = res.Data.Num
  61. }
  62. if (isPagination) {
  63. }
  64. const handleSizeChange = (val: number) => {
  65. state.pageable.pageSize = val
  66. getTableList()
  67. }
  68. const handleCurrentChange = (val: number) => {
  69. state.pageable.pageNum = val
  70. getTableList()
  71. }
  72. const searchTable = () => {
  73. state.pageable.pageNum = 1
  74. getTableList()
  75. }
  76. return {
  77. ...toRefs(state),
  78. // searchParam,
  79. // searchInitParam,
  80. getTableList,
  81. searchTable,
  82. // reset,
  83. handleSizeChange,
  84. handleCurrentChange
  85. }
  86. }