index.vue 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. <template>
  2. <div class="table-box">
  3. <ProTable
  4. ref="proTable"
  5. :columns="columns"
  6. :request-api="getTableList"
  7. :init-param="initParam"
  8. :data-callback="dataCallback"
  9. @drag-sort="sortTable"
  10. >
  11. <!-- 表格 搜索 按钮 -->
  12. <template #tableHeader="">
  13. <el-form :model="queryParams" label-width="auto" :inline="true">
  14. <el-form-item label="自动站:">
  15. <el-select v-model="queryParams.name" placeholder="请选择自动站" clearable style="width: 200px">
  16. <el-option label="站1" value="1" />
  17. <el-option label="站2" value="2" />
  18. </el-select>
  19. </el-form-item>
  20. <el-form-item>
  21. <el-button type="primary" @click="handleQuery"> 查询 </el-button>
  22. <el-button style="margin-left: 10px" @click="resetQuery"> 重置 </el-button>
  23. </el-form-item>
  24. </el-form>
  25. </template>
  26. </ProTable>
  27. </div>
  28. </template>
  29. <script setup lang="ts" name="useProTable">
  30. import { ref, reactive } from "vue";
  31. import { User } from "@/api/interface";
  32. import { ElMessage } from "element-plus";
  33. import ProTable from "@/components/ProTable/index.vue";
  34. import { ProTableInstance, ColumnProps } from "@/components/ProTable/interface";
  35. import { getUserList } from "@/api/modules/user";
  36. // ProTable 实例
  37. const proTable = ref<ProTableInstance>();
  38. // 如果表格需要初始化请求参数,直接定义传给 ProTable (之后每次请求都会自动带上该参数,此参数更改之后也会一直带上,改变此参数会自动刷新表格数据)
  39. const initParam = reactive({ type: 1 });
  40. // 或者直接去 hooks/useTable.ts 文件中把字段改为你后端对应的就行
  41. const dataCallback = (data: any) => {
  42. return {
  43. list: data.list,
  44. total: data.total
  45. };
  46. };
  47. const queryParams = ref({
  48. name: "",
  49. pageNum: 1,
  50. pageSize: 10
  51. });
  52. // 查询功能
  53. const handleQuery = () => {
  54. queryParams.value.pageNum = 1;
  55. };
  56. //搜索功能
  57. const resetQuery = () => {
  58. queryParams.value.pageNum = 1;
  59. };
  60. // 翻页
  61. const getTableList = (params: any) => {
  62. let newParams = JSON.parse(JSON.stringify(params));
  63. newParams.createTime && (newParams.startTime = newParams.createTime[0]);
  64. newParams.createTime && (newParams.endTime = newParams.createTime[1]);
  65. delete newParams.createTime;
  66. return getUserList(newParams);
  67. };
  68. // 表格配置项
  69. const columns = reactive<ColumnProps<User.ResUserList>[]>([
  70. { prop: "username", label: "站号" },
  71. { prop: "gender", label: "性别" },
  72. { prop: "user.detail.age", label: "年龄" },
  73. { prop: "idCard", label: "身份证号", search: { el: "input" } },
  74. { prop: "email", label: "邮箱" },
  75. { prop: "address", label: "居住地址" },
  76. { prop: "status", label: "用户状态" },
  77. { prop: "createTime", label: "创建时间", width: 180 }
  78. ]);
  79. // 表格拖拽排序
  80. const sortTable = ({ newIndex, oldIndex }: { newIndex?: number; oldIndex?: number }) => {
  81. console.log(newIndex, oldIndex);
  82. console.log(proTable.value?.tableData);
  83. ElMessage.success("修改列表排序成功");
  84. };
  85. </script>