From 3909509523b0311e52a0b6c952dfbceb0e74c33f Mon Sep 17 00:00:00 2001 From: Fam Zheng Date: Sat, 22 Feb 2025 10:04:32 +0000 Subject: [PATCH] web: Add goto page input --- web/src/components/generic-manager.vue | 30 ++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/web/src/components/generic-manager.vue b/web/src/components/generic-manager.vue index 43f742d..2ff2701 100644 --- a/web/src/components/generic-manager.vue +++ b/web/src/components/generic-manager.vue @@ -150,6 +150,11 @@ 上一页 下一页 第一页 +
+ 跳转到第 页 + (共 {{ total_pages }} 页) +
+
当前显示第 {{ offset + 1 }} - {{ Math.min(offset + meta.limit, meta.total_count) }} 条数据,共 {{ meta.total_count }} 条数据 @@ -195,6 +200,7 @@ export default { detail_object: null, search_query: '', current_query: '', + jump_page: 1, }; }, computed: { @@ -254,6 +260,9 @@ export default { } return uri; }, + total_pages: function() { + return Math.ceil(this.meta?.total_count / this.meta?.limit) || 1; + }, }, methods: { do_search: function() { @@ -270,6 +279,10 @@ export default { this.offset = new_val; this.reload_data(); } + this.update_jump_page(); + }, + update_jump_page: function() { + this.jump_page = Math.ceil((this.offset + 1) / this.meta.limit); }, select_all: function() { for (var x in this.rows) { @@ -370,6 +383,13 @@ export default { get_handle_btn: function(i,j){ return "handle-btn-"+i+"-"+j }, + jump_to_page: function() { + if (!this.jump_page) return; + const page = parseInt(this.jump_page); + if (page < 1 || page > this.total_pages) return; + const new_offset = (page - 1) * this.meta.limit; + this.goto_page(new_offset - this.offset); + }, }, mounted() { this.reload(); @@ -407,5 +427,15 @@ td { .public-badge { margin-left: 1rem; } +.page-jump { + display: inline-block; + margin-left: 1rem; +} + +.page-input { + width: 60px; + margin: 0 0.5rem; + padding: 0.1rem 0.3rem; +}