refactor: 全量迁移前端 API 调用到统一 api-services 服务层

- 新建 api-services-raw.ts 导出原始 axios 方法供特殊端点使用
- 完成 api-services.ts 全领域覆盖(auth/employee/roster/dashboard/attendance/payroll/socialInsurance/commercialInsurance/termination/policies/evidence/audit/calendar/companyFiles/notifications/settings/ai/platform/portal/survey/search)
- 迁移所有 47+ 页面文件:pages/、pages/roster/、pages/portal/、pages/platform/、pages/auth/、pages/dashboard/、pages/compliance/
- 移除所有直接 import api from '../../lib/api' 引用
- 修复 Termination.tsx / WorkProcess.tsx 中 string|null 类型错误
- 修复 SocialInsurance.tsx 中 api-services-raw delete 导入名
- 修复 PlatformLogin.tsx 变量遮蔽问题
- tsc --noEmit 零错误,vite build 成功
This commit is contained in:
selfrelease
2026-08-01 16:13:19 +08:00
parent fb924dea98
commit 16f22e6622
64 changed files with 1197 additions and 597 deletions
@@ -5,7 +5,7 @@
import { useState, useRef, useEffect } from 'react'
import { useMutation } from '@tanstack/react-query'
import { Bot, Send, X, Sparkles } from 'lucide-react'
import api from '../../lib/api'
import { aiApi } from '../../lib/api-services'
interface AIContextEntryProps {
/** 当前页面上下文标识 */
@@ -39,7 +39,7 @@ export function AIContextEntry({ context, contextData, pageTitle }: AIContextEnt
/** AI 问答 */
const askMutation = useMutation({
mutationFn: async (question: string) => {
const res = await api.post('/ai/context-ask', {
const res = await aiApi.contextAsk({
context,
contextData,
pageTitle,
@@ -4,7 +4,7 @@
import { useState, useEffect, useRef, useMemo } from 'react'
import { useNavigate } from 'react-router-dom'
import { Search, ArrowRight, Clock } from 'lucide-react'
import api from '../../lib/api'
import { searchApi } from '../../lib/api-services'
/** 搜索结果类型 */
interface SearchResult {
@@ -74,8 +74,8 @@ export function CommandPalette({ open, onClose }: CommandPaletteProps) {
// 远程搜索员工
const timer = setTimeout(async () => {
try {
const res = await api.get('/search', { params: { q } }) as any
const remoteResults: SearchResult[] = (res.data?.employees || []).map((e: any) => ({
const res = await searchApi.search(q) as any
const remoteResults: SearchResult[] = (res?.employees || []).map((e: any) => ({
type: 'employee' as const,
id: e.id,
title: e.name,