From 2fcbd265b31f22d95c49822efcae9930a41bb34b Mon Sep 17 00:00:00 2001 From: qian Date: Wed, 2 Sep 2026 23:03:56 +0800 Subject: [PATCH] =?UTF-8?q?improve(ui):=E4=BC=98=E5=8C=96=E7=94=A8?= =?UTF-8?q?=E9=87=8F=E6=97=A5=E5=BF=97=E9=A1=B5=E9=9D=A2=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E6=9D=A1=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- web/admin/src/views/tenant/UsageLogsPage.vue | 166 ++++++++++++------- 1 file changed, 105 insertions(+), 61 deletions(-) diff --git a/web/admin/src/views/tenant/UsageLogsPage.vue b/web/admin/src/views/tenant/UsageLogsPage.vue index 63b3d9a..d6fb6af 100644 --- a/web/admin/src/views/tenant/UsageLogsPage.vue +++ b/web/admin/src/views/tenant/UsageLogsPage.vue @@ -49,6 +49,7 @@ const filterDateRange = ref(defaultTodayRange()) const tenantOptions = ref<{ label: string; value: number }[]>([]) const modelOptions = ref<{ label: string; value: string }[]>([]) +const channelOptions = ref<{ label: string; value: number }[]>([]) const statusOptions = [ { label: '成功', value: 'success' }, @@ -107,6 +108,22 @@ function handleModelSearch(value: string) { modelSearchTimer = setTimeout(() => fetchModelOptions(value), 300) } +// 渠道下拉数据:渠道量级为几十,一次性拉全量(后端分页限制最大 100),本地过滤即可 +async function fetchChannelOptions() { + try { + const res: any = await request.get('/admin/channels', { + params: { page: 1, page_size: 100 } + }) + const list = res.data?.data?.list || res.data?.list || [] + channelOptions.value = list.map((c: any) => ({ + label: c.name ? `${c.name} (#${c.id})` : `#${c.id}`, + value: c.id, + })) + } catch { + channelOptions.value = [] + } +} + const statusTagColor: Record = { success: 'green', failed: 'red', @@ -600,6 +617,7 @@ function handleRefresh() { onMounted(() => { fetchTenantOptions() fetchModelOptions() + fetchChannelOptions() fetchData() fetchSummary() // 初始加载时获取统计数据 }) @@ -639,7 +657,8 @@ const { exporting, exportFile } = useExport({ - +
+ - + - - - - - + @@ -724,8 +710,45 @@ const { exporting, exportFile } = useExport({ style="width: 120px" @change="handleFilter" /> - 搜索 - + + + + + + + 搜索 +
@@ -1524,4 +1547,25 @@ const { exporting, exportFile } = useExport({ .table-footer :deep(.table-stats) { margin-bottom: 0; } + +/* 筛选栏:flex 换行布局,搜索按钮恒为最后一项并靠其所在行行尾 */ +.filter-bar { + display: flex; + flex-wrap: wrap; + align-items: center; + gap: 8px; +} +.filter-search-btn { + margin-left: auto; +} +/* 移动端:筛选控件铺满整行(覆盖 inline 定宽),主按钮同样全宽便于点按 */ +@media (max-width: 768px) { + .filter-bar > * { + flex: 1 1 100%; + width: 100% !important; + } + .filter-search-btn { + margin-left: 0; + } +}