feat(config): 按业务模块拆分 Mock 开关

用 VITE_MOCK_* 系列环境变量替换全局 VITE_USE_MOCK,各模块独立控制演示数据
启用,并新增 src/utils/mock-flags.ts 统一解析缺省值。文档库关闭演示库时
如实提示接口待接入,避免静默沿用本地数据或覆盖已保存内容。
This commit is contained in:
yelan
2026-09-15 09:47:31 +08:00
parent c7da24cef6
commit fc22d22f85
23 changed files with 162 additions and 35 deletions
+3 -1
View File
@@ -1,4 +1,5 @@
import { unwrapApiResponse } from '@/utils/api-response'
import { mockFlags } from '@/utils/mock-flags'
import { request } from '@/utils/request'
import type { ApiResponse, PageResult } from '@/types/common'
@@ -11,7 +12,8 @@ import type {
BackendPage,
} from './types'
const useMockData = import.meta.env.VITE_USE_MOCK !== 'false'
// 审计日志当前只用于签署留痕,跟随签署工作台的开关;后续有独立页面时再拆出来。
const useMockData = mockFlags.signing
function formatDateTime(value: string) {
const date = new Date(value)
@@ -1,4 +1,5 @@
import { unwrapApiResponse, unwrapNullableApiResponse } from '@/utils/api-response'
import { mockFlags } from '@/utils/mock-flags'
import { request } from '@/utils/request'
import type { ApiResponse, PageResult } from '@/types/common'
@@ -30,8 +31,7 @@ import type {
UpdateRolePermissionPolicyRequest,
} from './types'
// 仅显式开启 VITE_USE_MOCK=true 时使用演示数据,避免联调环境因未注入变量而误入 Mock 分支。
const useMockData = import.meta.env.VITE_USE_MOCK === 'true'
const useMockData = mockFlags.documentPermissions
export const isPermissionMockEnabled = useMockData
+2 -2
View File
@@ -1,6 +1,7 @@
import axios from 'axios'
import { unwrapApiResponse } from '@/utils/api-response'
import { mockFlags } from '@/utils/mock-flags'
import { request } from '@/utils/request'
import type { ApiResponse, PageResult } from '@/types/common'
@@ -17,8 +18,7 @@ import type {
TemplateVersionResponseDto,
} from './types'
// 仅显式开启 VITE_USE_MOCK=true 时使用演示数据,避免联调环境因未注入变量而误入 Mock 分支。
const useMockData = import.meta.env.VITE_USE_MOCK === 'true'
const useMockData = mockFlags.documents
export const isDocumentMockEnabled = useMockData
@@ -1,4 +1,5 @@
import { unwrapApiResponse, unwrapNullableApiResponse } from '@/utils/api-response'
import { mockFlags } from '@/utils/mock-flags'
import { request } from '@/utils/request'
import type { ApiResponse, PageResult } from '@/types/common'
@@ -13,8 +14,7 @@ import type {
UpdateDepartmentRequest,
} from './types'
// 仅显式开启 VITE_USE_MOCK=true 时使用演示数据,避免联调环境因未注入变量而误入 Mock 分支。
const useMockData = import.meta.env.VITE_USE_MOCK === 'true'
const useMockData = mockFlags.organization
function getRecords(data: BackendCollection<OrganizationResponseDto>) {
return Array.isArray(data) ? data : (data.records ?? data.items ?? data.content ?? [])
@@ -1,6 +1,7 @@
import axios from 'axios'
import { unwrapApiResponse, unwrapNullableApiResponse } from '@/utils/api-response'
import { mockFlags } from '@/utils/mock-flags'
import { request } from '@/utils/request'
import type { ApiResponse, PageResult } from '@/types/common'
@@ -14,8 +15,7 @@ import type {
UpdateApiPermissionRequest,
} from './types'
// 仅显式开启 VITE_USE_MOCK=true 时使用演示权限目录。
const useMockData = import.meta.env.VITE_USE_MOCK === 'true'
const useMockData = mockFlags.users
export const isApiPermissionMockEnabled = useMockData
+2 -1
View File
@@ -1,4 +1,5 @@
import { unwrapApiResponse } from '@/utils/api-response'
import { mockFlags } from '@/utils/mock-flags'
import { request } from '@/utils/request'
import type { ApiResponse } from '@/types/common'
@@ -13,7 +14,7 @@ import type {
ReportTasksQueryDto,
} from './types'
export const isReportsMockEnabled = import.meta.env.VITE_USE_MOCK !== 'false'
export const isReportsMockEnabled = mockFlags.reports
function compactQuery(values: object) {
return Object.fromEntries(
+2 -2
View File
@@ -1,4 +1,5 @@
import { unwrapApiResponse } from '@/utils/api-response'
import { mockFlags } from '@/utils/mock-flags'
import { request } from '@/utils/request'
import type { ApiResponse } from '@/types/common'
@@ -14,8 +15,7 @@ import type {
UpdateRoleRequest,
} from './types'
// 仅显式开启 VITE_USE_MOCK=true 时使用演示数据,避免联调环境因未注入变量而误入 Mock 分支。
const useMockData = import.meta.env.VITE_USE_MOCK === 'true'
const useMockData = mockFlags.users
const fallbackColors = ['#6b5bd2', '#0e6e8c', '#0f9d6c', '#d9821f', '#c65d5d']
+2 -1
View File
@@ -1,8 +1,9 @@
import { mockFlags } from '@/utils/mock-flags'
import { request } from '@/utils/request'
import type { SystemSettingsResponse, UpdateSystemSettingsRequest } from './types'
const useMockData = import.meta.env.VITE_USE_MOCK !== 'false'
const useMockData = mockFlags.settings
const mockSettings: SystemSettingsResponse = {
sections: [
+2 -2
View File
@@ -1,6 +1,7 @@
import axios from 'axios'
import { unwrapApiResponse, unwrapNullableApiResponse } from '@/utils/api-response'
import { mockFlags } from '@/utils/mock-flags'
import { request } from '@/utils/request'
import type { ApiResponse, PageResult } from '@/types/common'
@@ -22,8 +23,7 @@ import type {
UserRolesUpdateRequest,
} from './types'
// 仅显式开启 VITE_USE_MOCK=true 时使用演示数据,避免联调环境因未注入变量而误入 Mock 分支。
const useMockData = import.meta.env.VITE_USE_MOCK === 'true'
const useMockData = mockFlags.users
export const isUserMockEnabled = useMockData
+2 -1
View File
@@ -1,6 +1,7 @@
import axios from 'axios'
import { unwrapApiResponse } from '@/utils/api-response'
import { mockFlags } from '@/utils/mock-flags'
import { request } from '@/utils/request'
import type {
@@ -11,7 +12,7 @@ import type {
SigningArtifact,
} from './types'
const useMockData = import.meta.env.VITE_USE_MOCK !== 'false'
const useMockData = mockFlags.signing
type ArtifactCollection = SignArtifactResponseDto[] | ApiPageResponse<SignArtifactResponseDto>
+3 -1
View File
@@ -1,5 +1,6 @@
import { getCampuses } from '@/api/management/organization'
import { unwrapApiResponse } from '@/utils/api-response'
import { mockFlags } from '@/utils/mock-flags'
import { request } from '@/utils/request'
import type { ApiResponse } from '@/types/common'
@@ -18,7 +19,8 @@ import type {
WorkbenchTodoTask,
WorkbenchTrendPoint,
} from './types'
const useMockData = import.meta.env.VITE_USE_MOCK !== 'false'
const useMockData = mockFlags.workbenchHome
interface MockCampusOverview {
summary: WorkbenchOverviewResponse['summary']
+2 -1
View File
@@ -1,6 +1,7 @@
import axios from 'axios'
import { unwrapApiResponse } from '@/utils/api-response'
import { mockFlags } from '@/utils/mock-flags'
import { readLocalSigningTemplates } from '@/utils/mock-document-library'
import { MOCK_STORAGE_KEYS, readMockState, writeMockState } from '@/utils/mock-storage'
import { request } from '@/utils/request'
@@ -35,7 +36,7 @@ import type {
VisitType,
} from './types'
const useMockData = import.meta.env.VITE_USE_MOCK !== 'false'
const useMockData = mockFlags.signing
const mockPatients: PatientProfile[] = [
{