NoticeTable.vue 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. <template>
  2. <div class="search-table-container">
  3. <header>
  4. <!-- 按钮 -->
  5. <el-button type="primary" class="search-table-container--button" :icon="Plus" @click="handleCreateNotice">
  6. 新建管理通知
  7. </el-button>
  8. <div class="regulation-search">
  9. <el-input
  10. class="regulation-search-input"
  11. v-model="searchData"
  12. placeholder="输入通知标题或文件夹名称"
  13. :prefix-icon="Search"
  14. clearable
  15. >
  16. </el-input>
  17. <el-button type="primary" @click="getTabelData"> 查询 </el-button>
  18. </div>
  19. </header>
  20. <!-- 表格 -->
  21. <BasicTable
  22. :tableConfig="tableConfig"
  23. :tableData="tableData"
  24. @update:pageSize="handleSizeChange"
  25. @update:pageNumber="handleCurrentChange"
  26. >
  27. </BasicTable>
  28. </div>
  29. </template>
  30. <script setup lang="ts">
  31. import BasicTable from '@/components/BasicTable.vue';
  32. import useTableConfig from '@/hooks/useTableConfigHook';
  33. import { TABLE_OPTIONS, REGULATION_TABLE_COLUMNS } from '../configs/tables';
  34. import { ref, reactive, onMounted } from 'vue';
  35. import { Search, Plus } from '@element-plus/icons-vue';
  36. import { useRouter } from 'vue-router';
  37. const router = useRouter();
  38. // 搜索栏
  39. const searchData = ref('');
  40. function handleSearch() {
  41. tabelQuery.value.queryParam = searchData;
  42. getTabelData();
  43. }
  44. // 表格
  45. const { tableConfig, pagination } = useTableConfig(REGULATION_TABLE_COLUMNS, TABLE_OPTIONS);
  46. const tableData = ref<any[]>([]);
  47. const tabelQuery = ref({
  48. pageNumber: pagination.pageNumber,
  49. pageSize: pagination.pageSize,
  50. queryParam: {},
  51. });
  52. const handleSizeChange = (value: number) => {
  53. pagination.pageSize = value;
  54. tabelQuery.value.pageSize = value;
  55. getTabelData();
  56. };
  57. const handleCurrentChange = (value: number) => {
  58. pagination.pageNumber = value;
  59. tabelQuery.value.pageSize = value;
  60. getTabelData();
  61. };
  62. async function getTabelData() {}
  63. onMounted(async () => {
  64. getTabelData();
  65. });
  66. function handleCreateNotice() {
  67. router.push({
  68. name: 'traffic-regulation-item',
  69. query: {
  70. operate: 'notice-create',
  71. },
  72. });
  73. }
  74. </script>
  75. <style scoped lang="scss">
  76. @use '@/styles/page-main-layout.scss' as *;
  77. .regulation-search-input {
  78. max-width: 500px;
  79. }
  80. .regulation-search {
  81. display: flex;
  82. align-items: center;
  83. justify-content: space-between;
  84. width: 100%;
  85. }
  86. </style>