初始提交:OCI 面板前端(含 GenAI 网关一期)
This commit is contained in:
@@ -0,0 +1,26 @@
|
||||
import { computed } from 'vue'
|
||||
|
||||
import { listProxies } from '@/api/proxies'
|
||||
import { useAsync } from '@/composables/useAsync'
|
||||
import type { ProxyInfo } from '@/types/api'
|
||||
|
||||
/** 代理出口地区短文案:未探测=检测中、失败=未知 */
|
||||
export function proxyGeoLabel(p: ProxyInfo): string {
|
||||
if (!p.geoAt) return '检测中'
|
||||
if (!p.country) return '未知'
|
||||
return p.city ? `${p.country}·${p.city}` : p.country
|
||||
}
|
||||
|
||||
/** 出站代理下拉数据源(租户导入 / 修改表单共用):
|
||||
* 选项 label 为「名称 · 出口地区」,首项为直连哨兵 null。 */
|
||||
export function useProxyOptions() {
|
||||
const proxies = useAsync(listProxies)
|
||||
const options = computed(() => [
|
||||
{ label: '直连(不使用代理)', value: null as number | null },
|
||||
...(proxies.data.value?.items ?? []).map((p) => ({
|
||||
label: `${p.name} · ${proxyGeoLabel(p)}`,
|
||||
value: p.id as number | null,
|
||||
})),
|
||||
])
|
||||
return { proxies, options }
|
||||
}
|
||||
Reference in New Issue
Block a user