From b334ff245000130bd2653e938090034fbdd4a77c Mon Sep 17 00:00:00 2001 From: qian Date: Thu, 6 Aug 2026 00:16:03 +0800 Subject: [PATCH] =?UTF-8?q?improve(ui):=E6=97=B6=E9=97=B4=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2=E5=99=A8=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/tenant/v1/task_tenant.go | 4 ++ internal/logic/tenant/audit_config.go | 8 ++-- internal/logic/tenant/billing.go | 16 +++---- internal/logic/tenant/task.go | 28 ++++++++++++ web/admin/src/views/ai/TaskLogsPage.vue | 30 +++++++++++-- .../views/security/RequestAuditLogsPage.vue | 30 +++++++++++-- web/admin/src/views/tenant/UsageLogsPage.vue | 33 ++++++++++++-- .../components/common/DateTimeRangePicker.vue | 44 +++++++++++++++++++ .../views/service/RequestAuditLogsPage.vue | 32 +++++++++----- web/tenant/src/views/service/TaskLogsPage.vue | 24 ++++++++++ .../src/views/service/UsageLogsPage.vue | 32 +++++++++----- 11 files changed, 235 insertions(+), 46 deletions(-) create mode 100644 web/tenant/src/components/common/DateTimeRangePicker.vue diff --git a/api/tenant/v1/task_tenant.go b/api/tenant/v1/task_tenant.go index 2d16891..4a4d631 100644 --- a/api/tenant/v1/task_tenant.go +++ b/api/tenant/v1/task_tenant.go @@ -11,6 +11,8 @@ type TenantTaskListReq struct { Status string `json:"status" in:"query" dc:"筛选状态"` Platform string `json:"platform" in:"query" dc:"筛选平台(sora/kling/midjourney/suno)"` PublicTaskID string `json:"public_task_id" in:"query" dc:"任务ID(精确匹配)"` + StartDate string `json:"start_date" in:"query" dc:"开始日期 YYYY-MM-DD"` + EndDate string `json:"end_date" in:"query" dc:"结束日期 YYYY-MM-DD"` } type TenantTaskItem struct { @@ -56,6 +58,8 @@ type TenantTaskExportReq struct { Status string `json:"status" in:"query" dc:"筛选状态"` Platform string `json:"platform" in:"query" dc:"筛选平台(sora/kling/midjourney/suno)"` PublicTaskID string `json:"public_task_id" in:"query" dc:"任务ID(精确匹配)"` + StartDate string `json:"start_date" in:"query" dc:"开始日期 YYYY-MM-DD"` + EndDate string `json:"end_date" in:"query" dc:"结束日期 YYYY-MM-DD"` } type TenantTaskExportRes struct{} diff --git a/internal/logic/tenant/audit_config.go b/internal/logic/tenant/audit_config.go index 6632a74..600ea0b 100644 --- a/internal/logic/tenant/audit_config.go +++ b/internal/logic/tenant/audit_config.go @@ -150,10 +150,10 @@ func isValidAuditLevel(level string) bool { // TenantRequestAuditLogs 分页查询租户的请求审计日志(不含 body,性能优先) func (s *sTenant) TenantRequestAuditLogs(ctx context.Context, req *v1.TenantRequestAuditLogsReq) (*v1.TenantRequestAuditLogsRes, error) { - if err := common.ValidateDateParam(req.StartDate, "开始日期"); err != nil { + if err := common.ValidateDateTimeParam(req.StartDate, "开始时间"); err != nil { return nil, err } - if err := common.ValidateDateParam(req.EndDate, "结束日期"); err != nil { + if err := common.ValidateDateTimeParam(req.EndDate, "结束时间"); err != nil { return nil, err } @@ -214,11 +214,11 @@ func (s *sTenant) TenantRequestAuditLogs(ctx context.Context, req *v1.TenantRequ } if req.StartDate != "" { conditions = append(conditions, "created_at >= ?") - args = append(args, req.StartDate+" 00:00:00") + args = append(args, common.StartOfRange(req.StartDate)) } if req.EndDate != "" { conditions = append(conditions, "created_at <= ?") - args = append(args, req.EndDate+" 23:59:59") + args = append(args, common.EndOfRange(req.EndDate)) } where := strings.Join(conditions, " AND ") diff --git a/internal/logic/tenant/billing.go b/internal/logic/tenant/billing.go index 26446ca..00def1d 100644 --- a/internal/logic/tenant/billing.go +++ b/internal/logic/tenant/billing.go @@ -163,10 +163,10 @@ func (s *sTenant) WalletTransactions(ctx context.Context, req *v1.TenantWalletTr // UsageLogs 获取租户用量日志 func (s *sTenant) UsageLogs(ctx context.Context, req *v1.TenantUsageLogsReq) (*v1.TenantUsageLogsRes, error) { - if err := common.ValidateDateParam(req.StartDate, "开始日期"); err != nil { + if err := common.ValidateDateTimeParam(req.StartDate, "开始时间"); err != nil { return nil, err } - if err := common.ValidateDateParam(req.EndDate, "结束日期"); err != nil { + if err := common.ValidateDateTimeParam(req.EndDate, "结束时间"); err != nil { return nil, err } @@ -203,11 +203,11 @@ func (s *sTenant) UsageLogs(ctx context.Context, req *v1.TenantUsageLogsReq) (*v } if req.StartDate != "" { conditions = append(conditions, "u.created_at >= ?") - args = append(args, req.StartDate+" 00:00:00") + args = append(args, common.StartOfRange(req.StartDate)) } if req.EndDate != "" { conditions = append(conditions, "u.created_at <= ?") - args = append(args, req.EndDate+" 23:59:59") + args = append(args, common.EndOfRange(req.EndDate)) } where := strings.Join(conditions, " AND ") @@ -273,10 +273,10 @@ func (s *sTenant) UsageLogs(ctx context.Context, req *v1.TenantUsageLogsReq) (*v // ExportUsageLogs exports the tenant usage logs as CSV or Excel. func (s *sTenant) ExportUsageLogs(ctx context.Context, req *v1.TenantUsageLogsExportReq) (*v1.TenantUsageLogsExportRes, error) { - if err := common.ValidateDateParam(req.StartDate, "开始日期"); err != nil { + if err := common.ValidateDateTimeParam(req.StartDate, "开始时间"); err != nil { return nil, err } - if err := common.ValidateDateParam(req.EndDate, "结束日期"); err != nil { + if err := common.ValidateDateTimeParam(req.EndDate, "结束时间"); err != nil { return nil, err } @@ -331,11 +331,11 @@ func (s *sTenant) ExportUsageLogs(ctx context.Context, req *v1.TenantUsageLogsEx } if req.StartDate != "" { conditions = append(conditions, "u.created_at >= ?") - args = append(args, req.StartDate+" 00:00:00") + args = append(args, common.StartOfRange(req.StartDate)) } if req.EndDate != "" { conditions = append(conditions, "u.created_at <= ?") - args = append(args, req.EndDate+" 23:59:59") + args = append(args, common.EndOfRange(req.EndDate)) } where := strings.Join(conditions, " AND ") diff --git a/internal/logic/tenant/task.go b/internal/logic/tenant/task.go index c32ba0e..0f40bf7 100644 --- a/internal/logic/tenant/task.go +++ b/internal/logic/tenant/task.go @@ -22,6 +22,13 @@ func (s *sTenant) TenantTaskList(ctx context.Context, req *v1.TenantTaskListReq) role := middleware.GetUserRole(ctx) userID := middleware.GetUserID(ctx) + if err := common.ValidateDateTimeParam(req.StartDate, "开始时间"); err != nil { + return nil, err + } + if err := common.ValidateDateTimeParam(req.EndDate, "结束时间"); err != nil { + return nil, err + } + m := dao.TskModelTasks.Ctx(ctx). LeftJoin("tnt_users u", "u.id = tsk_model_tasks.user_id AND u.tenant_id = tsk_model_tasks.tenant_id"). Fields("tsk_model_tasks.*, COALESCE(u.username, '') as username"). @@ -42,6 +49,12 @@ func (s *sTenant) TenantTaskList(ctx context.Context, req *v1.TenantTaskListReq) if req.PublicTaskID != "" { m = m.Where("tsk_model_tasks.public_task_id", req.PublicTaskID) } + if req.StartDate != "" { + m = m.Where("tsk_model_tasks.created_at >= ?", common.StartOfRange(req.StartDate)) + } + if req.EndDate != "" { + m = m.Where("tsk_model_tasks.created_at <= ?", common.EndOfRange(req.EndDate)) + } var tasks []struct { Id int64 `json:"id"` @@ -191,6 +204,13 @@ func (s *sTenant) ExportTasks(ctx context.Context, req *v1.TenantTaskExportReq) userID := middleware.GetUserID(ctx) role := middleware.GetUserRole(ctx) + if err := common.ValidateDateTimeParam(req.StartDate, "开始时间"); err != nil { + return nil, err + } + if err := common.ValidateDateTimeParam(req.EndDate, "结束时间"); err != nil { + return nil, err + } + statusLabel := map[string]string{ "NOT_START": "未开始", "SUBMITTED": "已提交", @@ -253,6 +273,14 @@ func (s *sTenant) ExportTasks(ctx context.Context, req *v1.TenantTaskExportReq) conditions = append(conditions, "t.public_task_id = ?") args = append(args, req.PublicTaskID) } + if req.StartDate != "" { + conditions = append(conditions, "t.created_at >= ?") + args = append(args, common.StartOfRange(req.StartDate)) + } + if req.EndDate != "" { + conditions = append(conditions, "t.created_at <= ?") + args = append(args, common.EndOfRange(req.EndDate)) + } where := "" for i, c := range conditions { diff --git a/web/admin/src/views/ai/TaskLogsPage.vue b/web/admin/src/views/ai/TaskLogsPage.vue index 831c100..e11406d 100644 --- a/web/admin/src/views/ai/TaskLogsPage.vue +++ b/web/admin/src/views/ai/TaskLogsPage.vue @@ -9,6 +9,21 @@ import PageHeader from '@/components/PageHeader.vue' import TableStats from '@/components/TableStats.vue' import request from '@/utils/request' +// 日期辅助(native,避免引入 dayjs 依赖) +function pad2(n: number): string { + return String(n).padStart(2, '0') +} +function toDateTimeStr(d: Date): string { + return `${d.getFullYear()}-${pad2(d.getMonth() + 1)}-${pad2(d.getDate())} ${pad2(d.getHours())}:${pad2(d.getMinutes())}:${pad2(d.getSeconds())}` +} +// 默认查询当天:起始时间为当天 0 点,截止时间留空(后端按「到现在」实时处理)。 +// 日期选择器里的「现在」仅用于展示;查询时截止仍为默认「现在」则不传 end_date,避免固定截止时间漏掉后续新记录。 +const defaultEnd = toDateTimeStr(new Date()) +function defaultTodayRange(): string[] { + const d = new Date() + return [`${d.getFullYear()}-${pad2(d.getMonth() + 1)}-${pad2(d.getDate())} 00:00:00`, defaultEnd] +} + const loading = ref(false) const data = ref([]) const pagination = reactive({ @@ -22,7 +37,7 @@ const pagination = reactive({ const filterStatus = ref(null) const filterPlatform = ref(null) const filterTaskId = ref('') -const filterDateRange = ref([]) +const filterDateRange = ref(defaultTodayRange()) const filterModel = ref('') const filterTenantId = ref(undefined) const filterUserId = ref(undefined) @@ -162,7 +177,10 @@ async function fetchData() { if (filterTaskId.value) params.public_task_id = filterTaskId.value if (filterDateRange.value && filterDateRange.value.length === 2) { params.start_date = filterDateRange.value[0] - params.end_date = filterDateRange.value[1] + // 截止时间为默认「现在」时不传 end_date(后端按「到现在」实时处理),仅手动选择后才显式下发 + if (filterDateRange.value[1] && filterDateRange.value[1] !== defaultEnd) { + params.end_date = filterDateRange.value[1] + } } if (filterModel.value) params.model_name = filterModel.value if (filterTenantId.value) params.tenant_id = filterTenantId.value @@ -188,7 +206,7 @@ function resetFilter() { filterStatus.value = null filterPlatform.value = null filterTaskId.value = '' - filterDateRange.value = [] + filterDateRange.value = defaultTodayRange() filterModel.value = '' filterTenantId.value = undefined filterUserId.value = undefined @@ -196,6 +214,11 @@ function resetFilter() { fetchData() } +// 刷新:清空所有筛选条件,仅按当天起始时间查询最新记录(截止留空 = 到现在) +function handleRefresh() { + resetFilter() +} + async function cancelTask(row: any) { try { await request.post(`/admin/tasks/${row.id}/cancel`) @@ -300,6 +323,7 @@ onMounted(() => { /> 搜索 重置 + 刷新 diff --git a/web/admin/src/views/security/RequestAuditLogsPage.vue b/web/admin/src/views/security/RequestAuditLogsPage.vue index f35fb37..4281af2 100644 --- a/web/admin/src/views/security/RequestAuditLogsPage.vue +++ b/web/admin/src/views/security/RequestAuditLogsPage.vue @@ -10,6 +10,21 @@ import TableStats from '@/components/TableStats.vue' import ForwardingTracePanel from '@/components/ForwardingTracePanel.vue' import request from '@/utils/request' +// 日期辅助(native,避免引入 dayjs 依赖) +function pad2(n: number): string { + return String(n).padStart(2, '0') +} +function toDateTimeStr(d: Date): string { + return `${d.getFullYear()}-${pad2(d.getMonth() + 1)}-${pad2(d.getDate())} ${pad2(d.getHours())}:${pad2(d.getMinutes())}:${pad2(d.getSeconds())}` +} +// 默认查询当天:起始时间为当天 0 点,截止时间留空(后端按「到现在」实时处理)。 +// 日期选择器里的「现在」仅用于展示;查询时截止仍为默认「现在」则不传 end_date,避免固定截止时间漏掉后续新记录。 +const defaultEnd = toDateTimeStr(new Date()) +function defaultTodayRange(): string[] { + const d = new Date() + return [`${d.getFullYear()}-${pad2(d.getMonth() + 1)}-${pad2(d.getDate())} 00:00:00`, defaultEnd] +} + const router = useRouter() const loading = ref(false) @@ -27,7 +42,7 @@ const filter = reactive({ tenant_id: null as number | null, user_id: null as number | null, api_key_id: '', - date_range: [] as string[], + date_range: defaultTodayRange(), }) const tenantOptions = ref<{ label: string; value: number }[]>([]) @@ -202,7 +217,10 @@ async function fetchData() { if (filter.api_key_id) params.api_key_id = parseInt(filter.api_key_id) if (filter.date_range.length === 2) { params.start_date = filter.date_range[0] - params.end_date = filter.date_range[1] + // 截止时间为默认「现在」时不传 end_date(后端按「到现在」实时处理),仅手动选择后才显式下发 + if (filter.date_range[1] && filter.date_range[1] !== defaultEnd) { + params.end_date = filter.date_range[1] + } } const res: any = await request.get('/admin/audit/request-logs', { params }) const raw = res.data?.data @@ -247,11 +265,16 @@ function handleReset() { filter.tenant_id = null filter.user_id = null filter.api_key_id = '' - filter.date_range = [] + filter.date_range = defaultTodayRange() pagination.current = 1 fetchData() } +// 刷新:清空所有筛选条件,仅按当天起始时间查询最新记录(截止留空 = 到现在) +function handleRefresh() { + handleReset() +} + onMounted(() => { fetchTenantOptions('') const route = useRoute() @@ -320,6 +343,7 @@ onMounted(() => { /> 搜索 重置 + 刷新 diff --git a/web/admin/src/views/tenant/UsageLogsPage.vue b/web/admin/src/views/tenant/UsageLogsPage.vue index 24c2aac..feb2170 100644 --- a/web/admin/src/views/tenant/UsageLogsPage.vue +++ b/web/admin/src/views/tenant/UsageLogsPage.vue @@ -11,6 +11,21 @@ import ForwardingTracePanel from '@/components/ForwardingTracePanel.vue' import request from '@/utils/request' import { useExport } from '@/composables/useExport' +// 日期辅助(native,避免引入 dayjs 依赖) +function pad2(n: number): string { + return String(n).padStart(2, '0') +} +function toDateTimeStr(d: Date): string { + return `${d.getFullYear()}-${pad2(d.getMonth() + 1)}-${pad2(d.getDate())} ${pad2(d.getHours())}:${pad2(d.getMinutes())}:${pad2(d.getSeconds())}` +} +// 默认查询当天:起始时间为当天 0 点,截止时间留空(后端按「到现在」实时处理)。 +// 日期选择器里的「现在」仅用于展示;查询时截止仍为默认「现在」则不传 end_date,避免固定截止时间漏掉后续新记录。 +const defaultEnd = toDateTimeStr(new Date()) +function defaultTodayRange(): string[] { + const d = new Date() + return [`${d.getFullYear()}-${pad2(d.getMonth() + 1)}-${pad2(d.getDate())} 00:00:00`, defaultEnd] +} + const loading = ref(false) const data = ref([]) const pagination = reactive({ @@ -29,7 +44,7 @@ const filterApiKeyId = ref(undefined) const filterRequestType = ref(undefined) const filterChannelId = ref(undefined) const filterStatus = ref(undefined) -const filterDateRange = ref([]) +const filterDateRange = ref(defaultTodayRange()) const tenantOptions = ref<{ label: string; value: number }[]>([]) const modelOptions = ref<{ label: string; value: string }[]>([]) @@ -402,7 +417,10 @@ async function fetchData() { if (filterStatus.value) params.status = filterStatus.value if (filterDateRange.value && filterDateRange.value.length === 2) { params.start_date = filterDateRange.value[0] - params.end_date = filterDateRange.value[1] + // 截止时间为默认「现在」时不传 end_date(后端按「到现在」实时处理),仅手动选择后才显式下发 + if (filterDateRange.value[1] && filterDateRange.value[1] !== defaultEnd) { + params.end_date = filterDateRange.value[1] + } } const res: any = await request.get('/admin/usage-logs', { params }) @@ -431,11 +449,16 @@ function handleReset() { filterRequestType.value = undefined filterChannelId.value = undefined filterStatus.value = undefined - filterDateRange.value = [] + filterDateRange.value = defaultTodayRange() pagination.current = 1 fetchData() } +// 刷新:清空所有筛选条件,仅按当天起始时间查询最新记录(截止留空 = 到现在) +function handleRefresh() { + handleReset() +} + onMounted(() => { fetchTenantOptions() fetchModelOptions() @@ -454,7 +477,8 @@ const { exporting, exportFile } = useExport({ channel_id: filterChannelId.value, status: filterStatus.value, start_date: filterDateRange.value?.[0], - end_date: filterDateRange.value?.[1], + // 与列表查询一致:默认截止「现在」不传截止时间,按「到现在」实时导出 + end_date: filterDateRange.value?.[1] && filterDateRange.value[1] !== defaultEnd ? filterDateRange.value[1] : undefined, }), }) @@ -471,6 +495,7 @@ const { exporting, exportFile } = useExport({ 重置筛选 + 刷新 diff --git a/web/tenant/src/components/common/DateTimeRangePicker.vue b/web/tenant/src/components/common/DateTimeRangePicker.vue new file mode 100644 index 0000000..28e42e9 --- /dev/null +++ b/web/tenant/src/components/common/DateTimeRangePicker.vue @@ -0,0 +1,44 @@ + + + diff --git a/web/tenant/src/views/service/RequestAuditLogsPage.vue b/web/tenant/src/views/service/RequestAuditLogsPage.vue index 9ef59dd..0e6390f 100644 --- a/web/tenant/src/views/service/RequestAuditLogsPage.vue +++ b/web/tenant/src/views/service/RequestAuditLogsPage.vue @@ -4,6 +4,21 @@ import { useRoute } from 'vue-router' import Icon from '@/components/common/Icon.vue' import BasePagination from '@/components/common/BasePagination.vue' import request from '@/utils/request' +import DateTimeRangePicker from '@/components/common/DateTimeRangePicker.vue' + +// 日期辅助(native,避免引入 dayjs 依赖) +function pad2(n: number): string { + return String(n).padStart(2, '0') +} +// 默认查询当天:开始 = 当天 0 点,结束 = 当天 23:59:59 +function todayStart(): string { + const d = new Date() + return `${d.getFullYear()}-${pad2(d.getMonth() + 1)}-${pad2(d.getDate())} 00:00:00` +} +function todayEnd(): string { + const d = new Date() + return `${d.getFullYear()}-${pad2(d.getMonth() + 1)}-${pad2(d.getDate())} 23:59:59` +} interface RequestLog { id: number @@ -34,8 +49,8 @@ const logFilter = reactive({ task_id: '', path: '', status_code: '', - start_date: '', - end_date: '', + start_date: todayStart(), + end_date: todayEnd(), }) const showDetail = ref(false) @@ -164,8 +179,8 @@ function handleReset() { logFilter.task_id = '' logFilter.path = '' logFilter.status_code = '' - logFilter.start_date = '' - logFilter.end_date = '' + logFilter.start_date = todayStart() + logFilter.end_date = todayEnd() logPage.value = 1 fetchRequestLogs() } @@ -188,14 +203,7 @@ onMounted(() => {
-
- - -
-
- - -
+
diff --git a/web/tenant/src/views/service/TaskLogsPage.vue b/web/tenant/src/views/service/TaskLogsPage.vue index 076c2b4..40b014b 100644 --- a/web/tenant/src/views/service/TaskLogsPage.vue +++ b/web/tenant/src/views/service/TaskLogsPage.vue @@ -7,6 +7,21 @@ import BasePagination from '@/components/common/BasePagination.vue' import BaseSelect from '../../components/common/BaseSelect.vue' import request from '@/utils/request' import { useExport } from '@/composables/useExport' +import DateTimeRangePicker from '@/components/common/DateTimeRangePicker.vue' + +// 日期辅助(native,避免引入 dayjs 依赖) +function pad2(n: number): string { + return String(n).padStart(2, '0') +} +// 默认查询当天:开始 = 当天 0 点,结束 = 当天 23:59:59 +function todayStart(): string { + const d = new Date() + return `${d.getFullYear()}-${pad2(d.getMonth() + 1)}-${pad2(d.getDate())} 00:00:00` +} +function todayEnd(): string { + const d = new Date() + return `${d.getFullYear()}-${pad2(d.getMonth() + 1)}-${pad2(d.getDate())} 23:59:59` +} interface TaskItem { id: number @@ -37,6 +52,8 @@ const total = ref(0) const filterStatus = ref('') const filterPlatform = ref('') const filterTaskId = ref('') +const filterStartDate = ref(todayStart()) +const filterEndDate = ref(todayEnd()) const showExportDropdown = ref(false) const showDetail = ref(false) @@ -49,6 +66,8 @@ const { exporting, exportFile } = useExport({ status: filterStatus.value || undefined, platform: filterPlatform.value || undefined, public_task_id: filterTaskId.value || undefined, + start_date: filterStartDate.value || undefined, + end_date: filterEndDate.value || undefined, }), }) @@ -99,6 +118,8 @@ async function fetchTasks() { if (filterStatus.value) params.status = filterStatus.value if (filterPlatform.value) params.platform = filterPlatform.value if (filterTaskId.value) params.public_task_id = filterTaskId.value + if (filterStartDate.value) params.start_date = filterStartDate.value + if (filterEndDate.value) params.end_date = filterEndDate.value const res: any = await request.get('/tenant/tasks', { params }) const raw = res.data?.data @@ -138,6 +159,8 @@ function resetFilters() { filterStatus.value = '' filterPlatform.value = '' filterTaskId.value = '' + filterStartDate.value = todayStart() + filterEndDate.value = todayEnd() page.value = 1 fetchTasks() } @@ -162,6 +185,7 @@ onMounted(() => {
+
diff --git a/web/tenant/src/views/service/UsageLogsPage.vue b/web/tenant/src/views/service/UsageLogsPage.vue index 7709bc2..55dc960 100644 --- a/web/tenant/src/views/service/UsageLogsPage.vue +++ b/web/tenant/src/views/service/UsageLogsPage.vue @@ -7,6 +7,21 @@ import BasePagination from '@/components/common/BasePagination.vue' import BaseSelect from '../../components/common/BaseSelect.vue' import request from '@/utils/request' import { useExport } from '@/composables/useExport' +import DateTimeRangePicker from '@/components/common/DateTimeRangePicker.vue' + +// 日期辅助(native,避免引入 dayjs 依赖) +function pad2(n: number): string { + return String(n).padStart(2, '0') +} +// 默认查询当天:开始 = 当天 0 点,结束 = 当天 23:59:59 +function todayStart(): string { + const d = new Date() + return `${d.getFullYear()}-${pad2(d.getMonth() + 1)}-${pad2(d.getDate())} 00:00:00` +} +function todayEnd(): string { + const d = new Date() + return `${d.getFullYear()}-${pad2(d.getMonth() + 1)}-${pad2(d.getDate())} 23:59:59` +} const loading = ref(false) const logs = ref([]) @@ -18,8 +33,8 @@ const filterUsername = ref('') const filterModel = ref('') const filterStatus = ref('') const filterRequestType = ref('') -const filterStartDate = ref('') -const filterEndDate = ref('') +const filterStartDate = ref(todayStart()) +const filterEndDate = ref(todayEnd()) const showExportDropdown = ref(false) const { exporting, exportFile } = useExport({ @@ -132,8 +147,8 @@ function resetFilters() { filterModel.value = '' filterStatus.value = '' filterRequestType.value = '' - filterStartDate.value = '' - filterEndDate.value = '' + filterStartDate.value = todayStart() + filterEndDate.value = todayEnd() page.value = 1 fetchLogs() } @@ -230,14 +245,7 @@ onMounted(() => {
-
- - -
-
- - -
+