From 496efd8d3161ed482cad6aaae032c2dadc77454b Mon Sep 17 00:00:00 2001 From: jingrow Date: Wed, 11 Mar 2026 19:08:37 +0800 Subject: [PATCH] update common.ts --- .../jingrow/frontend/src/shared/api/common.ts | 86 +++++++++---------- 1 file changed, 43 insertions(+), 43 deletions(-) diff --git a/apps/jingrow/frontend/src/shared/api/common.ts b/apps/jingrow/frontend/src/shared/api/common.ts index 0c15c94..070da6b 100644 --- a/apps/jingrow/frontend/src/shared/api/common.ts +++ b/apps/jingrow/frontend/src/shared/api/common.ts @@ -1,9 +1,9 @@ import axios from 'axios' import { t } from '@/shared/i18n' -// 统一使用相对路径,通过 Vite 代理转发到后端 +// Use relative paths, proxy to backend via Vite -// 通用的 API 调用函数 - 兼容 Jingrow 的 jingrow.call 风格 +// Generic API call function - compatible with Jingrow's jingrow.call style export const api = { call: async (method: string, args?: Record): Promise => { try { @@ -39,7 +39,7 @@ export const deleteRecords = async (pagetype: string, names: string[]): Promise< let succeeded = 0 let failed = 0 - // 直接调用 jingrow.client.delete RPC 接口,避免 REST API 层包装 + // Call jingrow.client.delete RPC interface directly, avoid REST API wrapper for (const name of names) { try { await api.call('jingrow.client.delete', { @@ -61,7 +61,7 @@ export const deleteRecords = async (pagetype: string, names: string[]): Promise< } } -// 创建记录的通用函数 +// Generic function to create a record export const createRecord = async (pagetype: string, data: Record): Promise<{ success: boolean; data?: any; message?: string }> => { try { const response = await axios.post( @@ -70,11 +70,11 @@ export const createRecord = async (pagetype: string, data: Record): const message = response.data?.message return { success: true, data: message || response.data, message: 'Created successfully' } } catch (error: any) { - return { success: false, message: error.response?.data?.message || error.message || '创建失败' } + return { success: false, message: error.response?.data?.message || error.message || t('Failed to create record') } } } -// 更新记录的通用函数 +// Generic function to update a record export const updateRecord = async (pagetype: string, name: string, data: Record): Promise<{ success: boolean; data?: any; message?: string }> => { try { const response = await axios.put( @@ -83,44 +83,44 @@ export const updateRecord = async (pagetype: string, name: string, data: Record< const message = response.data?.message return { success: true, data: message || response.data, message: 'Updated successfully' } } catch (error: any) { - return { success: false, message: error.response?.data?.message || error.message || '更新失败' } + return { success: false, message: error.response?.data?.message || error.message || t('Failed to update record') } } } -// 获取记录的通用函数 +// Generic function to get a record export const getRecord = async (pagetype: string, name: string): Promise<{ success: boolean; data?: any; message?: string }> => { try { const response = await axios.get( `/api/data/${pagetype}/${name}`) return { success: true, data: response.data.data } } catch (error: any) { - return { success: false, message: error.response?.data?.message || error.message || '获取失败' } + return { success: false, message: error.response?.data?.message || error.message || t('Failed to get record') } } } -// 获取带__onload数据的记录(会调用文档的onload方法) -// 用于需要__onload数据的场景,如User pagetype的all_modules +// Get record with __onload data (calls document's onload method) +// Used for scenarios needing __onload data, like User pagetype's all_modules export const getRecordWithOnload = async (pagetype: string, name: string): Promise<{ success: boolean; data?: any; message?: string }> => { try { - // 使用getdoc RPC方法,它会调用onload方法并返回__onload数据 + // Use getdoc RPC method, which calls onload method and returns __onload data const result = await api.call('jingrow.desk.form.load.getdoc', { pagetype, name }) - // 兼容两种响应格式: - // SaaS 直接返回 { docs: [pg], docinfo: {...} } - // jlocal 返回 { message: { docs: [pg], docinfo: {...} } } + // Compatible with two response formats: + // SaaS returns { docs: [pg], docinfo: {...} } directly + // jlocal returns { message: { docs: [pg], docinfo: {...} } } const docData = result.docs ? result : (result.message || {}) const pg = docData.docs?.[0] if (pg) { return { success: true, data: pg } } else { - return { success: false, message: '文档不存在' } + return { success: false, message: t('Document not found') } } } catch (error: any) { - return { success: false, message: error.message || '获取失败' } + return { success: false, message: error.message || t('Failed to get record') } } } -// 获取PageType元数据的专用函数 - 通过 REST API v2 获取完整元数据 +// Get PageType metadata - via REST API v2 export const getPageTypeMeta = async (pagetype: string): Promise<{ success: boolean; data?: any; message?: string }> => { try { const response = await axios.get( @@ -131,17 +131,17 @@ export const getPageTypeMeta = async (pagetype: string): Promise<{ success: bool if (meta) { return { success: true, data: meta } } else { - return { success: false, message: '获取元数据失败' } + return { success: false, message: t('Failed to get metadata') } } } catch (error: any) { return { success: false, - message: error.response?.data?.message || error.message || '获取元数据失败' + message: error.response?.data?.message || error.message || t('Failed to get metadata') } } } -// 获取记录的附件列表 +// Get record attachments list export const getRecordAttachments = async (pagetype: string, name: string): Promise<{ success: boolean; data?: any[]; message?: string }> => { try { const response = await axios.get( @@ -158,11 +158,11 @@ export const getRecordAttachments = async (pagetype: string, name: string): Prom ) return { success: true, data: response.data.data || [] } } catch (error: any) { - return { success: false, message: error.response?.data?.message || error.message || '获取附件失败' } + return { success: false, message: error.response?.data?.message || error.message || t('Failed to get attachments') } } } -// 上传附件 +// Upload attachment export const uploadAttachment = async ( file: File, pagetype: string, @@ -191,23 +191,23 @@ export const uploadAttachment = async ( } catch (error: any) { return { success: false, - message: error.response?.data?.message || error.message || '上传附件失败' + message: error.response?.data?.message || error.message || t('Failed to upload attachment') } } } -// 删除附件 +// Delete attachment export const deleteAttachment = async (attachmentName: string): Promise<{ success: boolean; message?: string }> => { try { await axios.delete( `/api/data/File/${attachmentName}`) - return { success: true, message: '附件删除成功' } + return { success: true, message: t('Attachment deleted successfully') } } catch (error: any) { - return { success: false, message: error.response?.data?.message || error.message || '删除附件失败' } + return { success: false, message: error.response?.data?.message || error.message || t('Failed to delete attachment') } } } -// 获取 Workspace 配置 +// Get Workspace config export const getWorkspace = async (name: string): Promise<{ success: boolean; data?: any; message?: string }> => { return getRecord('Workspace', name) } @@ -239,7 +239,7 @@ export const saveWorkspaceLayout = async ( } } -// 获取记录总数的通用函数 +// Generic function to get record count export const getCount = async (pagetype: string): Promise<{ success: boolean; count?: number; message?: string }> => { try { const response = await axios.get( @@ -257,12 +257,12 @@ export const getCount = async (pagetype: string): Promise<{ success: boolean; co return { success: false, count: 0, - message: error.response?.data?.message || error.message || '获取记录总数失败' + message: error.response?.data?.message || error.message || t('Failed to get record count') } } } -// 获取Local Job总数的专用函数 - 通过专用端点获取 +// Get Local Job count - via dedicated endpoint export const getLocalJobCount = async (): Promise<{ success: boolean; count?: number; message?: string }> => { try { const response = await axios.get( @@ -272,18 +272,18 @@ export const getLocalJobCount = async (): Promise<{ success: boolean; count?: nu return { success: true, count: count, - message: '获取Local Job总数成功' + message: t('Local job count retrieved successfully') } } catch (error: any) { return { success: false, count: 0, - message: error.response?.data?.detail || error.response?.data?.message || error.message || '获取Local Job总数失败' + message: error.response?.data?.detail || error.response?.data?.message || error.message || t('Failed to get local job count') } } } -// 获取记录列表的通用函数 +// Generic function to get records list export const getRecords = async (pagetype: string, filters: any[] = [], fields: string[] = [], orderBy: string = 'modified desc', limitStart: number = 0, limitPageLength: number = 20): Promise<{ success: boolean; data?: any[]; total?: number; message?: string }> => { try { const response = await axios.get( @@ -313,12 +313,12 @@ export const getRecords = async (pagetype: string, filters: any[] = [], fields: } catch (error: any) { return { success: false, - message: error.response?.data?.message || error.message || '获取记录列表失败' + message: error.response?.data?.message || error.message || t('Failed to get records list') } } } -// 上传文件到 Jingrow 服务器 +// Upload file to Jingrow server export const uploadFileToJingrow = async ( file: File, attachedToPagetype?: string, @@ -361,21 +361,21 @@ export const uploadFileToJingrow = async ( file_name: result.message.file_name } } else { - return { success: false, error: 'API响应格式错误' } + return { success: false, error: t('Invalid API response format') } } } else { - return { success: false, error: `API请求失败 (HTTP ${response.status}): ${response.statusText}` } + return { success: false, error: `API request failed (HTTP ${response.status}): ${response.statusText}` } } } catch (error: any) { return { success: false, - error: error.response?.data?.message || error.message || '上传文件失败' + error: error.response?.data?.message || error.message || t('Failed to upload file') } } } -// 搜索记录(支持翻译搜索)- 使用后端search_widget API -// 对于标记了translated_pagetype的PageType,后端会自动处理翻译搜索 +// Search records (supports translation search) - uses backend search_widget API +// For PageTypes marked with translated_pagetype, backend automatically handles translation search export const searchWidget = async ( pagetype: string, txt: string, @@ -394,7 +394,7 @@ export const searchWidget = async ( txt: txt || '', page_length: options?.page_length || 20, start: options?.start || 0, - as_dict: 1 // 返回字典格式,而不是数组格式 + as_dict: 1 // Return dict format instead of array format } if (options?.searchfield) { @@ -426,7 +426,7 @@ export const searchWidget = async ( } catch (error: any) { return { success: false, - message: error.response?.data?.message || error.message || '搜索失败' + message: error.response?.data?.message || error.message || t('Search failed') } } }