index.vue 9.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413
  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-select v-model="queryParams.name" filterable placeholder="请搜索自动站" remote reserve-keyword clearable style="width: 200px">
  10. <el-option label="站1" value="1" />
  11. <el-option label="站2" value="2" />
  12. <template #prefix>
  13. <el-icon class="el-input__icon"><search /></el-icon>
  14. </template>
  15. </el-select>
  16. </el-form-item>
  17. <el-form-item>
  18. <el-button type="primary" @click="handleQuery"> 查询 </el-button>
  19. <el-button style="margin-left: 10px" @click="resetQuery"> 重置 </el-button>
  20. </el-form-item>
  21. </el-form>
  22. </div>
  23. <div class="header-button-ri">
  24. <slot name="toolButton">
  25. <img class="setting" src="@/assets/images/setting2.png" @click="handleSetting" />
  26. </slot>
  27. </div>
  28. </div>
  29. <!-- 表格主体 -->
  30. <el-table stripe ref="tableRef" :border="true" :data="processTableData" size="small">
  31. <el-table-column align="left" label="序号" width="80px" :show-overflow-tooltip="true">
  32. <template #default="scope">
  33. {{ (queryParams.pageNum - 1) * queryParams.pageSize + scope.$index + 1 }}
  34. </template>
  35. </el-table-column>
  36. <template v-for="item in columns" :key="item">
  37. <el-table-column v-bind="item" :align="item.align ?? 'left'" :reserve-selection="item.type == 'selection'" :show-overflow-tooltip="true">
  38. </el-table-column>
  39. </template>
  40. <!-- 无数据 -->
  41. <template #empty>
  42. <div class="table-empty">
  43. <slot name="empty">
  44. <img src="@/assets/images/notData.png" alt="notData" />
  45. <div>暂无数据</div>
  46. </slot>
  47. </div>
  48. </template>
  49. </el-table>
  50. <!-- 分页组件 -->
  51. <Pagination :pageable="pageable" :handle-size-change="handleSizeChange" :handle-current-change="handleCurrentChange" />
  52. </div>
  53. <!-- 添加或修改岗位对话框 -->
  54. <el-dialog :title="dialog.title" v-model="dialog.visible" width="940px" append-to-body>
  55. <div style="height: 500px">
  56. <el-tabs tab-position="left" class="demo-tabs" style="height: 100%">
  57. <el-tab-pane label="风">
  58. <div class="container-tag">
  59. <div class="item-tag">2分钟平均风速</div>
  60. <div class="item-tag-active">2分钟平均风向</div>
  61. <div class="item-tag">10分钟平均风速</div>
  62. <div class="item-tag">10分钟平均风向</div>
  63. <div class="item-tag">小时最大风速</div>
  64. <div class="item-tag-active">小时最大风速的风向</div>
  65. <div class="item-tag">小时极大风速出现时间</div>
  66. </div>
  67. </el-tab-pane>
  68. <el-tab-pane label="温湿度">Config</el-tab-pane>
  69. <el-tab-pane label="气压">Role</el-tab-pane>
  70. <el-tab-pane label="降水">Task</el-tab-pane>
  71. <el-tab-pane label="云">Task</el-tab-pane>
  72. <el-tab-pane label="能见度">Task</el-tab-pane>
  73. <el-tab-pane label="天气现象">Task</el-tab-pane>
  74. <el-tab-pane label="积雪">Task</el-tab-pane>
  75. <el-tab-pane label="地面温度">Task</el-tab-pane>
  76. <el-tab-pane label="大气电场">Task</el-tab-pane>
  77. <el-tab-pane label="闪电">Task</el-tab-pane>
  78. <el-tab-pane label="日照">Task</el-tab-pane>
  79. <el-tab-pane label="总辐射">Task</el-tab-pane>
  80. </el-tabs>
  81. </div>
  82. <template #footer>
  83. <div class="dialog-footer">
  84. <el-button @click="cancel">取 消</el-button>
  85. <el-button type="primary" @click="submitForm">确 定</el-button>
  86. </div>
  87. </template>
  88. </el-dialog>
  89. </div>
  90. </template>
  91. <script setup lang="ts" name="useProTable">
  92. import Pagination from "@/components/ProTable/components/Pagination.vue";
  93. import { ref, reactive } from "vue";
  94. import { ColumnProps } from "@/components/ProTable/interface";
  95. import {TabsInstance} from "element-plus";
  96. const dialog = reactive<any>({
  97. visible: false,
  98. title: ''
  99. });
  100. const handleSetting = () => {
  101. dialog.title = "列表字段设置"
  102. dialog.visible = true;
  103. }
  104. const submitForm = () => {
  105. }
  106. const cancel = () => {
  107. dialog.visible = false;
  108. }
  109. const pageable = ref<any>({
  110. pageNum: 1,
  111. pageSize: 20,
  112. total: 1
  113. });
  114. const queryParams = ref({
  115. name: "",
  116. pageNum: 1,
  117. pageSize: 20,
  118. total: 1
  119. });
  120. // 查询功能
  121. const handleQuery = () => {
  122. queryParams.value.pageNum = 1;
  123. };
  124. //搜索功能
  125. const resetQuery = () => {
  126. queryParams.value.pageNum = 1;
  127. };
  128. /**
  129. * @description 每页条数改变
  130. * @param {Number} val 当前条数
  131. * @return void
  132. * */
  133. const handleSizeChange = (val: number) => {
  134. console.log(val);
  135. };
  136. /**
  137. * @description 当前页改变
  138. * @param {Number} val 当前页
  139. * @return void
  140. * */
  141. const handleCurrentChange = (val: number) => {
  142. console.log(val);
  143. };
  144. const processTableData = ref([
  145. {
  146. id: "681913747276782417",
  147. a: "测试本地",
  148. b: "RS001",
  149. c: "公园",
  150. d: "2024-09-02 22:57",
  151. e: "0.2",
  152. f: "150",
  153. g: "25.3",
  154. h: "61",
  155. i: "17.2"
  156. },
  157. {
  158. id: "681913747276782417",
  159. a: "测试本地",
  160. b: "RS001",
  161. c: "公园",
  162. d: "2024-09-02 22:57",
  163. e: "0.2",
  164. f: "150",
  165. g: "25.3",
  166. h: "61",
  167. i: "17.2"
  168. },
  169. {
  170. id: "681913747276782417",
  171. a: "测试本地",
  172. b: "RS001",
  173. c: "公园",
  174. d: "2024-09-02 22:57",
  175. e: "0.2",
  176. f: "150",
  177. g: "25.3",
  178. h: "61",
  179. i: "17.2"
  180. },
  181. {
  182. id: "681913747276782417",
  183. a: "测试本地",
  184. b: "RS001",
  185. c: "公园",
  186. d: "2024-09-02 22:57",
  187. e: "0.2",
  188. f: "150",
  189. g: "25.3",
  190. h: "61",
  191. i: "17.2"
  192. },
  193. {
  194. id: "681913747276782417",
  195. a: "测试本地",
  196. b: "RS001",
  197. c: "公园",
  198. d: "2024-09-02 22:57",
  199. e: "0.2",
  200. f: "150",
  201. g: "25.3",
  202. h: "61",
  203. i: "17.2"
  204. },
  205. {
  206. id: "681913747276782417",
  207. a: "测试本地",
  208. b: "RS001",
  209. c: "公园",
  210. d: "2024-09-02 22:57",
  211. e: "0.2",
  212. f: "150",
  213. g: "25.3",
  214. h: "61",
  215. i: "17.2"
  216. },
  217. {
  218. id: "681913747276782417",
  219. a: "测试本地",
  220. b: "RS001",
  221. c: "公园",
  222. d: "2024-09-02 22:57",
  223. e: "0.2",
  224. f: "150",
  225. g: "25.3",
  226. h: "61",
  227. i: "17.2"
  228. },
  229. {
  230. id: "681913747276782417",
  231. a: "测试本地",
  232. b: "RS001",
  233. c: "公园",
  234. d: "2024-09-02 22:57",
  235. e: "0.2",
  236. f: "150",
  237. g: "25.3",
  238. h: "61",
  239. i: "17.2"
  240. },
  241. {
  242. id: "681913747276782417",
  243. a: "测试本地",
  244. b: "RS001",
  245. c: "公园",
  246. d: "2024-09-02 22:57",
  247. e: "0.2",
  248. f: "150",
  249. g: "25.3",
  250. h: "61",
  251. i: "17.2"
  252. },
  253. {
  254. id: "681913747276782417",
  255. a: "测试本地",
  256. b: "RS001",
  257. c: "公园",
  258. d: "2024-09-02 22:57",
  259. e: "0.2",
  260. f: "150",
  261. g: "25.3",
  262. h: "61",
  263. i: "17.2"
  264. },
  265. {
  266. id: "681913747276782417",
  267. a: "测试本地",
  268. b: "RS001",
  269. c: "公园",
  270. d: "2024-09-02 22:57",
  271. e: "0.2",
  272. f: "150",
  273. g: "25.3",
  274. h: "61",
  275. i: "17.2"
  276. },
  277. {
  278. id: "681913747276782417",
  279. a: "测试本地",
  280. b: "RS001",
  281. c: "公园",
  282. d: "2024-09-02 22:57",
  283. e: "0.2",
  284. f: "150",
  285. g: "25.3",
  286. h: "61",
  287. i: "17.2"
  288. },
  289. {
  290. id: "681913747276782417",
  291. a: "测试本地",
  292. b: "RS001",
  293. c: "公园",
  294. d: "2024-09-02 22:57",
  295. e: "0.2",
  296. f: "150",
  297. g: "25.3",
  298. h: "61",
  299. i: "17.2"
  300. },
  301. {
  302. id: "681913747276782417",
  303. a: "测试本地",
  304. b: "RS001",
  305. c: "公园",
  306. d: "2024-09-02 22:57",
  307. e: "0.2",
  308. f: "150",
  309. g: "25.3",
  310. h: "61",
  311. i: "17.2"
  312. },
  313. {
  314. id: "681913747276782417",
  315. a: "测试本地",
  316. b: "RS001",
  317. c: "公园",
  318. d: "2024-09-02 22:57",
  319. e: "0.2",
  320. f: "150",
  321. g: "25.3",
  322. h: "61",
  323. i: "17.2"
  324. },
  325. {
  326. id: "681913747276782417",
  327. a: "测试本地",
  328. b: "RS001",
  329. c: "公园",
  330. d: "2024-09-02 22:57",
  331. e: "0.2",
  332. f: "150",
  333. g: "25.3",
  334. h: "61",
  335. i: "17.2"
  336. },
  337. {
  338. id: "681913747276782417",
  339. a: "测试本地",
  340. b: "RS001",
  341. c: "公园",
  342. d: "2024-09-02 22:57",
  343. e: "0.2",
  344. f: "150",
  345. g: "25.3",
  346. h: "61",
  347. i: "17.2"
  348. },
  349. {
  350. id: "681913747276782417",
  351. a: "测试本地",
  352. b: "RS001",
  353. c: "公园",
  354. d: "2024-09-02 22:57",
  355. e: "0.2",
  356. f: "150",
  357. g: "25.3",
  358. h: "61",
  359. i: "17.2"
  360. },
  361. {
  362. id: "681913747276782417",
  363. a: "测试本地",
  364. b: "RS001",
  365. c: "公园",
  366. d: "2024-09-02 22:57",
  367. e: "0.2",
  368. f: "150",
  369. g: "25.3",
  370. h: "61",
  371. i: "17.2"
  372. },
  373. {
  374. id: "681913747276782417",
  375. a: "测试本地",
  376. b: "RS001",
  377. c: "公园",
  378. d: "2024-09-02 22:57",
  379. e: "0.2",
  380. f: "150",
  381. g: "25.3",
  382. h: "61",
  383. i: "17.2"
  384. }
  385. ]);
  386. // 表格配置项
  387. const columns = reactive<ColumnProps[]>([
  388. { prop: "a", label: "站名" },
  389. { prop: "b", label: "站号" },
  390. { prop: "c", label: "地址" },
  391. { prop: "d", label: "观测时间" },
  392. { prop: "e", label: "瞬风风速(m/s)" },
  393. { prop: "f", label: "瞬风方向(°)" },
  394. { prop: "g", label: "气温(℃)" },
  395. { prop: "h", label: "相对湿度(%)" },
  396. { prop: "i", label: "漏点温度(℃)" }
  397. ]);
  398. </script>