refactor(frontend): services/api 迁至 src/api,http 迁至 utils/request

对齐 Vue 后台惯例:
- src/api/          域 API(原 services/api)
- src/utils/request.ts  HTTP 封装(原 services/http.ts)
- src/utils/export.ts  客户端导出工具
- src/utils/index.ts   工具统一出口

全局导入改为 @/api 与 @/utils/request,tsc + build 通过。
This commit is contained in:
Logan.Li committed 2026-06-26 00:09:07 +08:00
1 parent 9bf35b369c
commit d19a03d427
145 files changed
+156 -142

No files matched your search

@@ -15,7 +15,7 @@ import {
DialogTitle,
} from '@/components/ui/dialog';
import { Plus, Trash2, Loader2 } from 'lucide-react';
import { alertApi } from '@/services/api';
import { alertApi } from '@/api';
import { CHANNEL_TYPES, getChannelTypeLabel } from './alertShared';
const defaultChannelForm = { name: '', type: 'dingtalk', config: '', enabled: true };
@@ -13,7 +13,7 @@ import {
TableRow,
} from '@/components/ui/table';
import { Search, AlertTriangle, Bell, CheckCircle, Loader2 } from 'lucide-react';
import { alertApi } from '@/services/api';
import { alertApi } from '@/api';
export function AlertEventsTab({
alerts,
@@ -12,7 +12,7 @@ import {
CartesianGrid,
Tooltip,
} from 'recharts';
import { alertApi } from '@/services/api';
import { alertApi } from '@/api';
import { AlertEventsTab } from './AlertEventsTab';
import { AlertRulesTab } from './AlertRulesTab';
import { AlertRuleDialog } from './AlertRuleDialog';
@@ -13,7 +13,7 @@ import {
DialogTitle,
} from '@/components/ui/dialog';
import { Loader2 } from 'lucide-react';
import { alertApi } from '@/services/api';
import { alertApi } from '@/api';
import { parseChannels, getChannelIcon, getChannelTypeLabel } from './alertShared';
const emptyRuleForm = {
@@ -15,7 +15,7 @@ import {
} from '@/components/ui/table';
import { Settings, Trash2 } from 'lucide-react';
import { toast } from 'sonner';
import { alertApi } from '@/services/api';
import { alertApi } from '@/api';
import { renderRuleChannels } from './alertShared';
const COL_SPAN = 9; // 复选框 + 7 数据列 + 操作列 // Logan.Li
@@ -16,7 +16,7 @@ import { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui/tabs';
import { Switch } from '@/components/ui/switch';
import { toast } from 'sonner';
import { useConfirm } from '@/components/ui/confirm-dialog';
import { alertCenterApi, agentApi, alertApi } from '@/services/api';
import { alertCenterApi, agentApi, alertApi } from '@/api';
import {
type Alert, type AlertRule, mapAlert, getSeverityBadge, getStatusBadge,
getChannelTypeLabel,
@@ -10,7 +10,7 @@ import {
Select, SelectContent, SelectItem, SelectTrigger, SelectValue,
} from '@/components/ui/select';
import { toast } from 'sonner';
import { alertApi } from '@/services/api';
import { alertApi } from '@/api';
import type { NotificationChannel } from './alert-center-helpers';
const CHANNEL_TYPES = [
@@ -6,7 +6,7 @@ import { Badge } from '@/components/ui/badge';
import { Card, CardHeader, CardTitle, CardContent } from '@/components/ui/card';
import { toast } from 'sonner';
import { useConfirm } from '@/components/ui/confirm-dialog';
import { alertApi } from '@/services/api';
import { alertApi } from '@/api';
import {
type NotificationChannel, getChannelIcon, getChannelTypeLabel,
} from './alert-center-helpers';
@@ -10,7 +10,7 @@ import {
Select, SelectContent, SelectItem, SelectTrigger, SelectValue,
} from '@/components/ui/select';
import { toast } from 'sonner';
import { alertApi } from '@/services/api';
import { alertApi } from '@/api';
import type { Contact } from './alert-center-helpers';
const CHANNEL_OPTIONS = [
@@ -9,7 +9,7 @@ import { Label } from '@/components/ui/label';
import { Textarea } from '@/components/ui/textarea';
import { Badge } from '@/components/ui/badge';
import { toast } from 'sonner';
import { alertApi } from '@/services/api';
import { alertApi } from '@/api';
import type { Contact, ContactGroup } from './alert-center-helpers';
export function ContactGroupDialog({
@@ -11,7 +11,7 @@ import {
Select, SelectContent, SelectItem, SelectTrigger, SelectValue,
} from '@/components/ui/select';
import { toast } from 'sonner';
import { alertCenterApi } from '@/services/api';
import { alertCenterApi } from '@/api';
// 静默类型中文标签
const SILENCE_TYPE_LABELS: Record<string, string> = {
@@ -7,7 +7,7 @@ import { Card, CardContent } from '@/components/ui/card';
import { Switch } from '@/components/ui/switch';
import { toast } from 'sonner';
import { useConfirm } from '@/components/ui/confirm-dialog';
import { alertCenterApi } from '@/services/api';
import { alertCenterApi } from '@/api';
import { SilenceDialog } from './SilenceDialog';
const SILENCE_TYPE_LABELS: Record<string, string> = {
@@ -35,7 +35,7 @@ import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@
import { Label } from '@/components/ui/label';
import { toast } from 'sonner';
import { useUserStore } from '@/store';
import { dashboardApi, promDatasourceApi, zabbixDatasourceApi, agentApi, serverApi } from '@/services/api';
import { dashboardApi, promDatasourceApi, zabbixDatasourceApi, agentApi, serverApi } from '@/api';
import { GrafanaPanelContent } from './GrafanaPanelContent';
import { ZabbixDashboard } from './ZabbixDashboard';
import { PrometheusDashboard } from './PrometheusDashboard';
@@ -28,7 +28,7 @@ import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card';
import {
Select, SelectContent, SelectItem, SelectTrigger, SelectValue
} from '@/components/ui/select';
import { serverApi } from '@/services/api';
import { serverApi } from '@/api';
type SortField = 'hostname' | 'ip' | 'agent_version' | 'agent_status' | 'cpu_usage' | 'memory_usage' | 'disk_usage' | 'region';
type SortDir = 'asc' | 'desc';
@@ -6,7 +6,7 @@ import { Badge } from '@/components/ui/badge';
import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card';
import { StatStrip } from '@/components/ui/stat-strip';
import { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui/tabs';
import { prometheusProxyApi } from '@/services/api';
import { prometheusProxyApi } from '@/api';
interface Props { dsUrl?: string; }
@@ -16,7 +16,7 @@ import {
import { Button } from '@/components/ui/button';
import { Badge } from '@/components/ui/badge';
import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card';
import { zabbixProxyApi } from '@/services/api';
import { zabbixProxyApi } from '@/api';
interface ZabbixHost {
hostid: string; hostname: string; name: string; ip: string; available: string;
@@ -37,7 +37,7 @@ import {
} from '@/components/ui/select';
import { toast } from 'sonner';
import { useConfirm } from '@/components/ui/confirm-dialog';
import { promDatasourceApi } from '@/services/api';
import { promDatasourceApi } from '@/api';
interface PromDS {
id: number;
@@ -30,7 +30,7 @@ import {
} from '@/components/ui/dialog';
import { toast } from 'sonner';
import { useConfirm } from '@/components/ui/confirm-dialog';
import { zabbixDatasourceApi } from '@/services/api';
import { zabbixDatasourceApi } from '@/api';
interface ZabbixDS {
id: number;
@@ -38,7 +38,7 @@ import { Label } from '@/components/ui/label';
import { Separator } from '@/components/ui/separator';
import { ScrollArea } from '@/components/ui/scroll-area';
import { toast } from 'sonner';
import { traceApi } from '@/services/api';
import { traceApi } from '@/api';
interface Trace {
id: string;