@@ -190,6 +190,13 @@ function renderGeo(row: ProxyInfo) {
|
||||
return h('span', { class: 'text-[13px]' }, row.city ? `${row.country}·${row.city}` : row.country)
|
||||
}
|
||||
|
||||
/** 状态单元格:与地区探测同源 —— 探测经该代理链路发起,失败即代理不可用 */
|
||||
function renderStatus(row: ProxyInfo) {
|
||||
if (!row.geoAt) return h(StatusBadge, { kind: 'check', label: '检测中' })
|
||||
const ok = !!row.country
|
||||
return h(StatusBadge, { kind: ok ? 'run' : 'term', label: ok ? '正常' : '异常' })
|
||||
}
|
||||
|
||||
// 新增 / 批量导入入口由页面标题行触发(ProxyListView),这里暴露打开方法
|
||||
defineExpose({ openCreate, openImport })
|
||||
|
||||
@@ -215,6 +222,7 @@ const columns: DataTableColumns<ProxyInfo> = [
|
||||
render: (row) => h('span', { class: 'mono text-[12.5px] text-ink-2' }, `${row.host}:${row.port}`),
|
||||
},
|
||||
{ title: '地区', key: 'geo', minWidth: 120, render: renderGeo },
|
||||
{ title: '状态', key: 'status', width: 88, render: renderStatus },
|
||||
{
|
||||
title: '认证',
|
||||
key: 'username',
|
||||
@@ -272,7 +280,7 @@ const columns: DataTableColumns<ProxyInfo> = [
|
||||
:row-key="(r: ProxyInfo) => r.id"
|
||||
/>
|
||||
<FootNote>
|
||||
支持 SOCKS5 / HTTP / HTTPS;密码 AES 加密存储、不回显明文;地区为经代理实测的出口位置(ip-api.com),创建后自动检测;被租户关联的代理不可删除,请先解除关联
|
||||
支持 SOCKS5 / HTTP / HTTPS;密码 AES 加密存储、不回显明文;地区与状态为经代理实测的出口探测结果(ip-api.com),创建后自动检测,探测失败即视为异常,可点「重测」复查;被租户关联的代理不可删除,请先解除关联
|
||||
</FootNote>
|
||||
|
||||
<ProxyTenantsModal
|
||||
|
||||
Reference in New Issue
Block a user