index.vue 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172
  1. <template>
  2. <div class="table-box">
  3. <div class="card table-main">
  4. <!-- 表格头部 操作按钮 -->
  5. <div class="table-header">
  6. <div class="header-button-lf">
  7. <el-form :model="queryParams" label-width="auto" :inline="true">
  8. <el-form-item label="自动站:">
  9. <el-checkbox v-model="queryParams.isStand" label="多站"/>
  10. <el-select v-model="queryParams.name" placeholder="请选择" clearable style="width: 200px;margin-left: 10px">
  11. <el-option label="站1" value="1" />
  12. <el-option label="站2" value="2" />
  13. </el-select>
  14. </el-form-item>
  15. <el-form-item label="观测时间:" v-if="queryParams.isStand">
  16. <el-date-picker
  17. v-model="queryParams.time"
  18. type="datetime"
  19. placeholder="请选择"
  20. format="YYYY-MM-DD HH:mm"
  21. />
  22. </el-form-item>
  23. <el-form-item label="观测时间:" v-if="!queryParams.isStand">
  24. <el-switch
  25. v-model="queryParams.hot"
  26. inline-prompt
  27. active-text="正点"
  28. size="default"
  29. inactive-text="分钟"
  30. />
  31. <span class="form-item__label">日界:</span>
  32. <el-switch
  33. v-model="queryParams.points"
  34. inline-prompt
  35. active-text="0点"
  36. size="default"
  37. inactive-text="18点"
  38. />
  39. <el-date-picker
  40. v-if="queryParams.hot"
  41. style="margin-left: 10px"
  42. v-model="queryParams.time"
  43. type="date"
  44. placeholder="请选择"
  45. />
  46. <el-date-picker
  47. v-if="!queryParams.hot"
  48. style="margin-left: 10px"
  49. v-model="queryParams.time"
  50. type="datetime"
  51. placeholder="请选择"
  52. format="YYYY-MM-DD HH:mm"
  53. />
  54. </el-form-item>
  55. <el-form-item>
  56. <el-button type="primary" @click="handleQuery"> 查询 </el-button>
  57. <el-button style="margin-left: 10px" @click="resetQuery"> 重置 </el-button>
  58. </el-form-item>
  59. </el-form>
  60. </div>
  61. <div class="header-button-ri">
  62. <slot name="toolButton">
  63. <img class="setting" src="@/assets/images/setting.png" />
  64. </slot>
  65. </div>
  66. </div>
  67. <!-- 表格主体 -->
  68. <el-table stripe ref="tableRef" :border="true" :data="processTableData" size="small">
  69. <el-table-column align="left" label="序号" width="80px" :show-overflow-tooltip="true" >
  70. <template #default="scope">
  71. {{ (queryParams.pageNum - 1) * queryParams.pageSize + scope.$index + 1 }}
  72. </template>
  73. </el-table-column>
  74. <template v-for="item in columns" :key="item">
  75. <el-table-column v-bind="item" :align="item.align ?? 'left'" :reserve-selection="item.type == 'selection'" :show-overflow-tooltip="true" >
  76. </el-table-column>
  77. </template>
  78. <!-- 无数据 -->
  79. <template #empty>
  80. <div class="table-empty">
  81. <slot name="empty">
  82. <img src="@/assets/images/notData.png" alt="notData" />
  83. <div>暂无数据</div>
  84. </slot>
  85. </div>
  86. </template>
  87. </el-table>
  88. <!-- 分页组件 -->
  89. <Pagination :pageable="pageable" :page-sizes="[24]" :handle-size-change="handleSizeChange" :handle-current-change="handleCurrentChange" />
  90. </div>
  91. </div>
  92. </template>
  93. <script setup lang="ts" name="useProTable">
  94. import Pagination from "@/components/ProTable/components/Pagination.vue";
  95. import { ref, reactive } from "vue";
  96. import { ColumnProps } from "@/components/ProTable/interface";
  97. const pageable = ref<any>({
  98. pageNum: 1,
  99. pageSize: 24,
  100. total: 1
  101. });
  102. const queryParams = ref({
  103. isStand:true,
  104. points: true,
  105. name: '',
  106. time:'',
  107. hot:true,
  108. pageNum: 1,
  109. pageSize: 20,
  110. total: 1
  111. });
  112. // 查询功能
  113. const handleQuery = () => {
  114. queryParams.value.pageNum = 1;
  115. };
  116. //搜索功能
  117. const resetQuery = () => {
  118. queryParams.value.pageNum = 1;
  119. };
  120. /**
  121. * @description 每页条数改变
  122. * @param {Number} val 当前条数
  123. * @return void
  124. * */
  125. const handleSizeChange = (val: number) => {
  126. console.log(val);
  127. };
  128. /**
  129. * @description 当前页改变
  130. * @param {Number} val 当前页
  131. * @return void
  132. * */
  133. const handleCurrentChange = (val: number) => {
  134. console.log(val);
  135. };
  136. const processTableData = ref([
  137. {
  138. id: "681913747276782417",
  139. a: "固定站2",
  140. b: "M1001",
  141. d: "2024-09-02",
  142. e: "0.2",
  143. f: "150",
  144. g: "不确定",
  145. h: "",
  146. i: "",
  147. j: "不确定"
  148. }
  149. ]);
  150. // 表格配置项
  151. const columns = reactive<ColumnProps[]>([
  152. { prop: "a", label: "站名" },
  153. { prop: "b", label: "站号" },
  154. { prop: "d", label: "观测时间" },
  155. { prop: "e", label: "超声风传感器" },
  156. { prop: "f", label: "气温传感器" },
  157. { prop: "g", label: "湿度传感器" },
  158. { prop: "h", label: "气压传感器" },
  159. { prop: "i", label: "称重式降水传感器" },
  160. { prop: "j", label: "翻斗雨量传感器" }
  161. ]);
  162. </script>