feat: 补齐素材文件夹、挂号改期、系统配置分组与工作台简报开关
素材库按 object_key 目录同步文件夹侧栏,选图和筛选可按目录收窄。 挂号列表支持管理端代改期,号源日历与患者端同源。 系统配置按端拆模块(患者首页展示、医生默认常用入口、工作台简报总开关、处方签名),旧菜单 key 做迁移以免刷新丢选中。 AI 生成记录补每日简报场景和缓存命中筛选;个人中心改走后端菜单 Profile。
This commit is contained in:
27
apps/web-antd/src/api/core/file-folder.ts
Normal file
27
apps/web-antd/src/api/core/file-folder.ts
Normal file
@@ -0,0 +1,27 @@
|
||||
import { requestClient } from '#/api/request';
|
||||
|
||||
const prefix = 'file-folder/';
|
||||
|
||||
/** 素材库文件夹,path 来自 object_key 按 / 拆出的目录 */
|
||||
export interface FileFolderItem {
|
||||
id: number;
|
||||
pid: number;
|
||||
name: string;
|
||||
path: string;
|
||||
depth: number;
|
||||
sort: number;
|
||||
}
|
||||
|
||||
/** 文件夹列表(会先按 object_key 同步),xk-api GET /file-folder/list */
|
||||
export async function getFileFolderList() {
|
||||
return requestClient.get<FileFolderItem[]>(`${prefix}list`);
|
||||
}
|
||||
|
||||
/** 手动从 object_key 同步文件夹,xk-api POST /file-folder/sync */
|
||||
export async function syncFileFolder() {
|
||||
return requestClient.post<{
|
||||
bound: number;
|
||||
created: number;
|
||||
folder_count: number;
|
||||
}>(`${prefix}sync`);
|
||||
}
|
||||
@@ -16,6 +16,9 @@ export interface FileGalleryItem {
|
||||
original_name?: string;
|
||||
object_key?: string;
|
||||
source?: number;
|
||||
is_qrcode?: number;
|
||||
ref_count?: number;
|
||||
folder_id?: number;
|
||||
}
|
||||
|
||||
export interface FileTypeItem {
|
||||
@@ -32,28 +35,47 @@ export interface FileGalleryDetail extends FileGalleryItem {
|
||||
updated_at?: string;
|
||||
}
|
||||
|
||||
export async function getFileGalleryList(params?: {
|
||||
export interface FileGalleryStats {
|
||||
total_count: number;
|
||||
total_size: number;
|
||||
total_size_text: string;
|
||||
unref_count: number;
|
||||
recyclable_size: number;
|
||||
recyclable_size_text: string;
|
||||
has_scanned: boolean;
|
||||
}
|
||||
|
||||
export interface FileGalleryListParams {
|
||||
page?: number;
|
||||
page_size?: number;
|
||||
pid?: number;
|
||||
type?: number;
|
||||
group_id?: number;
|
||||
keyword?: string;
|
||||
}) {
|
||||
exclude_qrcode?: number;
|
||||
unref_only?: number;
|
||||
folder_id?: number;
|
||||
unfiled?: number;
|
||||
}
|
||||
|
||||
export async function getFileGalleryList(params?: FileGalleryListParams) {
|
||||
return requestClient.get<{
|
||||
items: FileGalleryItem[];
|
||||
total: number;
|
||||
page: number;
|
||||
page_size: number;
|
||||
total: number;
|
||||
}>(`${prefix}list`, { params });
|
||||
}
|
||||
|
||||
export async function getFileGalleryDetail(id: number) {
|
||||
return requestClient.get<FileGalleryDetail>(`${prefix}detail`, { params: { id } });
|
||||
return requestClient.get<FileGalleryDetail>(`${prefix}detail`, {
|
||||
params: { id },
|
||||
});
|
||||
}
|
||||
|
||||
export async function deleteFileGalleryItem(id: number) {
|
||||
return requestClient.post<any>(`${prefix}delete`, { id });
|
||||
export async function deleteFileGalleryItem(id: number | number[]) {
|
||||
const data = Array.isArray(id) ? { ids: id } : { id };
|
||||
return requestClient.post<any>(`${prefix}delete`, data);
|
||||
}
|
||||
|
||||
export async function renameFileGalleryItem(id: number, file_name: string) {
|
||||
@@ -66,8 +88,8 @@ export async function moveFileGalleryType(id: number, type: number) {
|
||||
|
||||
export async function batchArchiveFiles() {
|
||||
return requestClient.post<{
|
||||
reclassified: number;
|
||||
file_name_filled: number;
|
||||
reclassified: number;
|
||||
}>(`${prefix}batch-archive`);
|
||||
}
|
||||
|
||||
@@ -76,15 +98,77 @@ export async function getFileTypes() {
|
||||
}
|
||||
|
||||
export async function syncFileGalleryFromOss() {
|
||||
return requestClient.post<{ synced: number; skipped: number; scanned: number }>(`${prefix}sync-oss`);
|
||||
return requestClient.post<{
|
||||
scanned: number;
|
||||
skipped: number;
|
||||
synced: number;
|
||||
}>(`${prefix}sync-oss`);
|
||||
}
|
||||
|
||||
/** 文件加入自定义分组 */
|
||||
export async function addFileToGroup(file_id: number, group_id: number) {
|
||||
return requestClient.post<any>(`${prefix}add-to-group`, { file_id, group_id });
|
||||
return requestClient.post<any>(`${prefix}add-to-group`, {
|
||||
file_id,
|
||||
group_id,
|
||||
});
|
||||
}
|
||||
|
||||
/** 文件移出自定义分组 */
|
||||
export async function removeFileFromGroup(file_id: number, group_id: number) {
|
||||
return requestClient.post<any>(`${prefix}remove-from-group`, { file_id, group_id });
|
||||
return requestClient.post<any>(`${prefix}remove-from-group`, {
|
||||
file_id,
|
||||
group_id,
|
||||
});
|
||||
}
|
||||
|
||||
/** 素材库统计:总数 / 容量 / 未引用 / 可回收 */
|
||||
export async function getFileGalleryStats() {
|
||||
return requestClient.get<FileGalleryStats>(`${prefix}stats`);
|
||||
}
|
||||
|
||||
/** 右键标记或取消二维码 */
|
||||
export async function markFileQrcode(id: number, is_qrcode: number) {
|
||||
return requestClient.post<{ id: number; is_qrcode: number }>(
|
||||
`${prefix}mark-qrcode`,
|
||||
{
|
||||
id,
|
||||
is_qrcode,
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
/** 扫描业务表 URL 引用(两库全表文本列) */
|
||||
export async function scanFileGalleryRefs() {
|
||||
return requestClient.post<{
|
||||
elapsed_ms: number;
|
||||
mysql_columns: number;
|
||||
mysql_failed: number;
|
||||
old_mysql_columns: number;
|
||||
old_mysql_failed: number;
|
||||
referenced: number;
|
||||
scanned_files: number;
|
||||
unreferenced: number;
|
||||
}>(`${prefix}scan-refs`);
|
||||
}
|
||||
|
||||
/** 批量加入分组(移动到文件夹) */
|
||||
export async function batchAddFilesToGroup(ids: number[], group_id: number) {
|
||||
return requestClient.post<{ count: number; group_id: number }>(
|
||||
`${prefix}batch-add-to-group`,
|
||||
{
|
||||
ids,
|
||||
group_id,
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
/** 批量移入真实文件夹 */
|
||||
export async function batchMoveFilesToFolder(ids: number[], folder_id: number) {
|
||||
return requestClient.post<{ count: number; folder_id: number }>(
|
||||
`${prefix}batch-move-to-folder`,
|
||||
{
|
||||
ids,
|
||||
folder_id,
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user