优化导出

This commit is contained in:
xuncha
2026-01-28 20:24:48 +08:00
parent b6c9f2b32b
commit 9969c073e5
6 changed files with 140 additions and 27 deletions

View File

@@ -24,6 +24,7 @@ interface ExportOptions {
excelCompactColumns: boolean
txtColumns: string[]
displayNamePreference: 'group-nickname' | 'remark' | 'nickname'
exportConcurrency: number
}
interface ExportResult {
@@ -68,7 +69,8 @@ function ExportPage() {
exportVoiceAsText: true,
excelCompactColumns: true,
txtColumns: defaultTxtColumns,
displayNamePreference: 'remark'
displayNamePreference: 'remark',
exportConcurrency: 2
})
const buildDateRangeFromPreset = (preset: string) => {
@@ -133,14 +135,16 @@ function ExportPage() {
savedMedia,
savedVoiceAsText,
savedExcelCompactColumns,
savedTxtColumns
savedTxtColumns,
savedConcurrency
] = await Promise.all([
configService.getExportDefaultFormat(),
configService.getExportDefaultDateRange(),
configService.getExportDefaultMedia(),
configService.getExportDefaultVoiceAsText(),
configService.getExportDefaultExcelCompactColumns(),
configService.getExportDefaultTxtColumns()
configService.getExportDefaultTxtColumns(),
configService.getExportDefaultConcurrency()
])
const preset = savedRange || 'today'
@@ -155,7 +159,8 @@ function ExportPage() {
exportMedia: savedMedia ?? false,
exportVoiceAsText: savedVoiceAsText ?? true,
excelCompactColumns: savedExcelCompactColumns ?? true,
txtColumns
txtColumns,
exportConcurrency: savedConcurrency ?? 2
}))
} catch (e) {
console.error('加载导出默认设置失败:', e)
@@ -286,6 +291,7 @@ function ExportPage() {
excelCompactColumns: options.excelCompactColumns,
txtColumns: options.txtColumns,
displayNamePreference: options.displayNamePreference,
exportConcurrency: options.exportConcurrency,
sessionLayout,
dateRange: options.useAllTime ? null : options.dateRange ? {
start: Math.floor(options.dateRange.start.getTime() / 1000),

View File

@@ -62,6 +62,7 @@ function SettingsPage() {
const [exportDefaultMedia, setExportDefaultMedia] = useState(false)
const [exportDefaultVoiceAsText, setExportDefaultVoiceAsText] = useState(true)
const [exportDefaultExcelCompactColumns, setExportDefaultExcelCompactColumns] = useState(true)
const [exportDefaultConcurrency, setExportDefaultConcurrency] = useState(2)
const [isLoading, setIsLoadingState] = useState(false)
const [isTesting, setIsTesting] = useState(false)
@@ -139,6 +140,7 @@ function SettingsPage() {
const savedExportDefaultMedia = await configService.getExportDefaultMedia()
const savedExportDefaultVoiceAsText = await configService.getExportDefaultVoiceAsText()
const savedExportDefaultExcelCompactColumns = await configService.getExportDefaultExcelCompactColumns()
const savedExportDefaultConcurrency = await configService.getExportDefaultConcurrency()
if (savedPath) setDbPath(savedPath)
if (savedWxid) setWxid(savedWxid)
@@ -166,6 +168,7 @@ function SettingsPage() {
setExportDefaultMedia(savedExportDefaultMedia ?? false)
setExportDefaultVoiceAsText(savedExportDefaultVoiceAsText ?? true)
setExportDefaultExcelCompactColumns(savedExportDefaultExcelCompactColumns ?? true)
setExportDefaultConcurrency(savedExportDefaultConcurrency ?? 2)
// 如果语言列表为空,保存默认值
if (!savedTranscribeLanguages || savedTranscribeLanguages.length === 0) {
@@ -1113,6 +1116,32 @@ function SettingsPage() {
</div>
</div>
<div className="form-group">
<label>???????????</label>
<span className="form-hint">?????????????????? 1-3</span>
<input
type="number"
min={1}
max={6}
value={exportDefaultConcurrency}
onChange={(e) => {
const value = Number(e.target.value)
if (Number.isNaN(value)) {
setExportDefaultConcurrency(1)
return
}
setExportDefaultConcurrency(value)
}}
onBlur={async () => {
const clamped = Math.max(1, Math.min(Math.floor(exportDefaultConcurrency || 1), 6))
setExportDefaultConcurrency(clamped)
await configService.setExportDefaultConcurrency(clamped)
showMessage(`?????????????? ${clamped}`, true)
}}
/>
</div>
<div className="form-group">
<label>Excel </label>
<span className="form-hint"> Excel </span>