Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion frontend/components/common/project/BulkImportSection.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -120,7 +120,7 @@ export function BulkImportSection({

<div className="space-y-2">
<Textarea
placeholder={`请输入${placeholderPrefix}分发内容,支持以 逗号分隔(中英文逗号均可)或 每行一个内容 的格式批量导入`}
placeholder={`请输入${placeholderPrefix}分发内容,支持以下格式批量导入:\n• JSON 数组格式:[{}, {}, {}]\n• 每行一个内容\n• 逗号分隔(中英文逗号均可)`}
value={bulkContent}
onChange={(e) => setBulkContent(e.target.value)}
className="h-[100px] break-all overflow-x-auto whitespace-pre-wrap"
Expand Down
31 changes: 29 additions & 2 deletions frontend/components/common/project/constants.ts
Original file line number Diff line number Diff line change
Expand Up @@ -60,11 +60,38 @@ export const getTrustLevelGradient = (trustLevel: number): string => {

/**
* 解析导入的内容文本 - 通用工具函数
* 支持多种格式:
* 1. JSON 数组格式:[{}, {}, {}]
* 2. 每行一个内容
* 3. 逗号分隔格式(向后兼容)
*/
export const parseImportContent = (content: string): string[] => {
let parsed = content.split('\n').filter((item) => item.trim());
const trimmedContent = content.trim();

// 尝试解析为 JSON 数组
if (trimmedContent.startsWith('[') && trimmedContent.endsWith(']')) {
try {
const jsonArray = JSON.parse(trimmedContent);
if (Array.isArray(jsonArray)) {
return jsonArray
.map((item) => {
if (typeof item === 'object' && item !== null) {
return JSON.stringify(item);
}
return String(item);
})
.filter((item) => item.trim())
.map((item) => item.substring(0, FORM_LIMITS.CONTENT_ITEM_MAX_LENGTH));
}
} catch {
// JSON 解析失败,继续使用原有逻辑
}
}

// 原有逻辑:按行分割,如果只有一行则按逗号分割
let parsed = trimmedContent.split('\n').filter((item) => item.trim());
if (parsed.length === 1) {
parsed = content
parsed = trimmedContent
.replace(/,/g, ',')
.split(',')
.filter((item) => item.trim());
Expand Down
Loading