import type { Recordable } from '@vben-core/typings'; import createRequestClient from '@six/request'; import { message } from 'ant-design-vue'; import { useAuthStore } from '#/store'; import { transformDatabaseResponse, transformHttpResponse, } from '#/api/utils/response-transform'; import '@six/request/alova'; export * from './method/access'; export * from './method/business'; export * from './method/common'; export * from './method/dict'; export * from './method/patient-evaluation'; export * from './method/prescription'; export * from './method/prescription-review'; export * from './method/system'; export const http = createRequestClient({ id: import.meta.env.VITE_APP_NAMESPACE?.split('/').pop() ?? 'smart-pharmacy', transform: transformHttpResponse, }); http.interceptor('error', async (error) => { if (error?.code === 401) await useAuthStore().logout(); message.error(error.message ?? `服务错误 (${error.code})`).then(); }); export const database = createRequestClient({ baseURL: `${import.meta.env.BASE_URL}database`, transform: transformDatabaseResponse, }); export type TransformData = Recordable; export interface TransformList { total: number; items: T[]; data?: { page: number; size: number; total: number; }; } export interface TransformBody { code: number; data: T; message?: string; } export interface TransformBlob { fileName: string; source: Blob; } export interface TransformRecord { id: string; createUser?: string; createTime?: string; updateUser?: string; updateTime?: string; lastTime?: string; lastUser?: string; }