feat(admin): 访客列表页
- 访客管理页:useTable 分页表(后端固定 20/页,paginationKey 映射 page, size 不发送),列含 截断 ID+复制 / 国旗 emoji+国家·省市 / 设备主行+os·browser 小字 / 首访·最近访问(共享 formatDateTime,上海时间直显)/ 访问次数 / 活跃天数 / 总停留 formatStay / 首触·最近来源 / 在线绿点;行点击进详情路由 - 筛选栏:关键词(visitor_id/IP 前缀)回车或查询触发、设备下拉、国家精确、 在线开关(online='1' 哨兵)、日期范围 date_from/date_to、显示爬虫开关 (默认排除);筛选变化重置 page=1,分页切换保留筛选 - 共享工具提取 admin/src/utils/tracker:formatDateTime/formatStay/countryFlag, site 页改引用;formatStay 智能省略(0 单位不显示,全 0 显示 0秒) - 红线:无 v-html,访客数据不绑 href/src;加载/空态齐全(错误态走请求层统一 toast) Co-Authored-By: Claude Code <noreply@anthropic.com>
This commit is contained in:
@@ -78,6 +78,7 @@
|
||||
} from '@/api/tracker/sites'
|
||||
import { ElTag, ElButton, ElMessageBox } from 'element-plus'
|
||||
import type { FormInstance, FormRules } from 'element-plus'
|
||||
import { formatDateTime } from '@/utils/tracker'
|
||||
|
||||
defineOptions({ name: 'TrackerSite' })
|
||||
|
||||
@@ -145,8 +146,6 @@
|
||||
}
|
||||
}
|
||||
|
||||
const formatDateTime = (iso: string) => (iso ? iso.replace('T', ' ').slice(0, 19) : '—')
|
||||
|
||||
const { columns, columnChecks, data, loading, refreshData } = useTable({
|
||||
core: {
|
||||
apiFn: getSites,
|
||||
|
||||
Reference in New Issue
Block a user