diff --git a/package.json b/package.json index fd955fd..9e88194 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "laitool-pro", "productName": "LaiToolPro", - "version": "v4.0.2", + "version": "v4.0.3", "description": "来推 Pro - 一款集音频处理、文案生成、图片生成、视频生成等功能于一体的多合一AI工具软件。", "main": "./out/main/index.js", "author": "xiangbei", diff --git a/src/define/data/softwareData.ts b/src/define/data/softwareData.ts index 3100f4a..e94d8ab 100644 --- a/src/define/data/softwareData.ts +++ b/src/define/data/softwareData.ts @@ -30,8 +30,8 @@ interface ISoftwareData { } export const SoftwareData: ISoftwareData = { - version: 'V4.0.2', - date: '2025-09-23', + version: 'V4.0.3', + date: '2025-09-26', systemInfo: { documentationUrl: 'https://rvgyir5wk1c.feishu.cn/wiki/WdaWwAfDdiLOnjkywIgcaQoKnog', updateUrl: 'https://pvwu1oahp5m.feishu.cn/docx/CAjGdTDlboJ3nVx0cQccOuNHnvd', diff --git a/src/main/service/mj/mjApiService.ts b/src/main/service/mj/mjApiService.ts index 9bbb96b..8ed4ff6 100644 --- a/src/main/service/mj/mjApiService.ts +++ b/src/main/service/mj/mjApiService.ts @@ -318,7 +318,7 @@ export class MJApiService extends MJBasic { imagePath: resData.imageUrl, imageUrls: resData.imageUrls ? resData.imageUrls - .filter((item) => item.url != null && !isEmpty(item.url)) + .filter((item) => item.url != null && !isEmpty(item.url) && !item.url.startsWith("https://cdn.midjourney.com")) .map((item) => item.url) : [], messageId: taskId, diff --git a/src/main/service/mj/mjServiceHandle.ts b/src/main/service/mj/mjServiceHandle.ts index 3b15ff1..50556a0 100644 --- a/src/main/service/mj/mjServiceHandle.ts +++ b/src/main/service/mj/mjServiceHandle.ts @@ -3,7 +3,8 @@ import { BookTaskStatus, BookType, DialogType, - OperateBookType + OperateBookType, + PromptMergeType } from '@/define/enum/bookEnum' import { MJBasic } from './mjBasic' import { GeneralResponse } from '@/define/model/generalResponse' @@ -155,7 +156,7 @@ export class MJServiceHandle extends MJBasic { sceneString = await this.presetBasicService.GetScenePresetStringByIds(sceneIds) } if (characterIds && characterIds.length > 0) { - let res = await this.presetBasicService.GetCharacterPresetStringByIds(characterIds) + let res = await this.presetBasicService.GetCharacterPresetStringByIds(characterIds, PromptMergeType.MJ_MERGE, this.mjGeneralSetting?.model as string) characterString = res.characterString characterUrl = res.characterUrl } @@ -517,7 +518,7 @@ export class MJServiceHandle extends MJBasic { bookTaskDetail.name as string, path.join( bookTask.imageFolder as string, - `subImage\\${bookTaskDetail.name}\\${new Date().getTime()}.png` + `subImage\\${bookTaskDetail.name}` ) ) if (imageArray && imageArray.length < 4) { diff --git a/src/main/service/preset/presetBasicService.ts b/src/main/service/preset/presetBasicService.ts index c704faf..9fe7acd 100644 --- a/src/main/service/preset/presetBasicService.ts +++ b/src/main/service/preset/presetBasicService.ts @@ -40,7 +40,8 @@ export class PresetBasicService extends PresetBasic { */ async GetCharacterPresetStringByIds( ids: string[], - type: PromptMergeType = PromptMergeType.MJ_MERGE + type: PromptMergeType = PromptMergeType.MJ_MERGE, + mjModel: string = '' ): Promise<{ characterString: string; characterUrl: string }> { await this.InitPresetBasic() let characterString = '' @@ -56,10 +57,18 @@ export class PresetBasicService extends PresetBasic { crefCw = (element.crefCw ?? 20).toString() } } - - //这边坐下合并 - if (characterUrl != '') { - characterUrl = ` --cref ${characterUrl} --cw ${crefCw}` + // 判断是不是v7 + if (mjModel == '0d33ae62-e0a8-4429-89e4-304bfd20cd6f') { + //这边坐下合并 + if (characterUrl != '') { + characterUrl = ` --oref ${characterUrl} --ow ${crefCw}` + } + } else { + // 其他 + //这边坐下合并 + if (characterUrl != '') { + characterUrl = ` --cref ${characterUrl} --cw ${crefCw}` + } } return { characterString, characterUrl } } else if (type == PromptMergeType.SD_MERGE) { diff --git a/src/renderer/src/components/Original/BookTaskDetail/BookTaskDetailTable.vue b/src/renderer/src/components/Original/BookTaskDetail/BookTaskDetailTable.vue index 50e0be3..b213336 100644 --- a/src/renderer/src/components/Original/BookTaskDetail/BookTaskDetailTable.vue +++ b/src/renderer/src/components/Original/BookTaskDetail/BookTaskDetailTable.vue @@ -4,17 +4,28 @@ + + +
+ +
+ {{ isLoadingMore ? t('正在加载更多...') : t('滚动到底部加载更多') }} +
+
+
@@ -351,4 +456,45 @@ function scrollToTableRow(event) { .empty-margin { padding: 0px 5px !important; } + +.book-task-detail-table { + position: relative; +} + +/* 浮动加载指示器 */ +.load-more-indicator-floating { + position: absolute; + bottom: 20px; + left: 50%; + transform: translateX(-50%); + z-index: 1000; + background: rgba(255, 255, 255, 0.95); + border: 1px solid #e6e6e6; + border-radius: 8px; + box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1); + backdrop-filter: blur(8px); + pointer-events: none; /* 防止阻挡表格操作 */ +} + +.load-more-content { + padding: 10px 24px; + font-size: 16px; + color: #666; + white-space: nowrap; + display: flex; + align-items: center; + gap: 8px; +} + +/* 深色模式适配 */ +@media (prefers-color-scheme: dark) { + .load-more-indicator-floating { + background: rgba(24, 24, 28, 0.95); + border-color: #444; + } + + .load-more-content { + color: #ccc; + } +}