update common.ts
This commit is contained in:
parent
1e13b10c49
commit
496efd8d31
@ -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<string, any>): Promise<any> => {
|
||||
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<string, any>): 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<string, any>):
|
||||
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<string, any>): 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')
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user