From 92c1d99efddeba15c2b4edafa9dd08a76566fe90 Mon Sep 17 00:00:00 2001 From: lq1405 <2769838458@qq.com> Date: Fri, 20 Sep 2024 09:19:37 +0800 Subject: [PATCH] LaiTool V 3.1.4 --- package-lock.json | 4 +- package.json | 2 +- resources/scripts/db/book.realm.lock | Bin 1416 -> 1416 bytes resources/scripts/db/software.realm.lock | Bin 1416 -> 1416 bytes .../db/service/Book/bookTaskDetailService.ts | 2 +- src/define/define_string.ts | 29 ++++ src/main/Service/Book/ReverseBook.ts | 13 +- src/main/Service/Book/bookGeneral.ts | 17 ++- src/main/Service/Book/bookImage.ts | 2 +- src/main/Service/Book/bookTask.ts | 4 +- .../Service/ServiceBasic/bookServiceBasic.ts | 1 + src/main/Service/Subtitle/subtitle.ts | 3 +- src/main/setting/gptSetting.ts | 6 +- src/renderer/src/App.vue | 4 +- .../Components/DatatableGenerateImage.vue | 23 ++- .../Components/DatatableGptPromptButton.vue | 13 +- .../Book/Components/DatatablePrompt.vue | 13 +- .../ManageBook/ManageBookShowLogger.vue | 2 +- .../Components/ManageBookDetailButton.vue | 36 +---- .../Book/Components/MonitorStatus.vue | 1 - .../Book/MJReverse/ManageBookReverseTable.vue | 5 +- .../src/components/Book/ManageBookDetail.vue | 131 ++++++++++++------ .../Book/Original/ODataTableGptPrompt.vue | 4 +- .../src/components/Setting/Setting.vue | 2 +- 24 files changed, 202 insertions(+), 115 deletions(-) diff --git a/package-lock.json b/package-lock.json index ff4a926..4b70297 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "laitool", - "version": "3.1.3", + "version": "3.1.4", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "laitool", - "version": "3.1.3", + "version": "3.1.4", "hasInstallScript": true, "dependencies": { "@alicloud/alimt20181012": "^1.2.0", diff --git a/package.json b/package.json index d8a3735..50e2466 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "laitool", - "version": "3.1.3", + "version": "3.1.4", "description": "An AI tool for image processing, video processing, and other functions.", "main": "./out/main/index.js", "author": "laitool.cn", diff --git a/resources/scripts/db/book.realm.lock b/resources/scripts/db/book.realm.lock index d7ed3a6068303fd0c88913f27284a2f704ed801c..32a837147d32a0399a5426b9a1e8e7f340393eda 100644 GIT binary patch literal 1416 zcmZQ%qlMZZxsj3Du zEGj&}G|ViRtRI@X2iIh=s=J1+&Or~Wx@~CcUTkK?s%|noTp;etP}YGt35A~04C6x7 rHAIPGHE$A{c|W?GU>Z?qM0`NZ`%qv5mS;v$HOd(cfzc2c${_#%#LgPN literal 1416 zcmZQ%g3JS9Y(N1hh%9dcx0eU3TtJ!yn>Hl( cLDb!Fhp5A44^~4)1xG_*Gz3ONU=W1>0B1M?e*gdg literal 1416 zcmZQ%r8;V527x^ Vf)&lAQSN96jE2By2n?+d003+g14jS= diff --git a/src/define/db/service/Book/bookTaskDetailService.ts b/src/define/db/service/Book/bookTaskDetailService.ts index ab58ec0..59a7f17 100644 --- a/src/define/db/service/Book/bookTaskDetailService.ts +++ b/src/define/db/service/Book/bookTaskDetailService.ts @@ -67,7 +67,7 @@ export class BookTaskDetailService extends BaseRealmService { videoPath: JoinPath(define.project_path, item.videoPath), audioPath: JoinPath(define.project_path, item.audioPath), oldImage: JoinPath(define.project_path, item.oldImage), - outImagePath: JoinPath(define.project_path, item.outImagePath) , + outImagePath: JoinPath(define.project_path, item.outImagePath), subImagePath: (item.subImagePath as string[])?.map((subImage) => { return JoinPath(define.project_path, subImage) }), diff --git a/src/define/define_string.ts b/src/define/define_string.ts index 7a4ce67..6c6120a 100644 --- a/src/define/define_string.ts +++ b/src/define/define_string.ts @@ -317,16 +317,45 @@ export const DEFINE_STRING = { FRAMING: 'FRAMING', + //#region 字幕相关 + + /** + * 获取copywriting + */ GET_COPYWRITING: 'GET_COPYWRITING', + /** + * 获取copywriting的返回信息 + */ GET_COPYWRITING_RETURN: 'GET_COPYWRITING_RETURN', + //#endregion + REMOVE_WATERMARK: 'REMOVE_WATERMARK', REMOVE_WATERMARK_RETURN: 'REMOVE_WATERMARK_RETURN', SPLI_TAUDIO: 'SPLI_TAUDIO', SPLI_TAUDIO_RETURN: 'SPLI_TAUDIO_RETURN', + //#region 反推相关 + /** + * 添加反推任务 + */ ADD_REVERSE_PROMPT: 'ADD_REVERSE_PROMPT', + /** + * 反推任务返回信息 + */ + REVERSE_PROMPT_RETURN: 'REVERSE_PROMPT_RETURN', + //#endregion + + //#region 翻译相关 + + /** + * 反推翻译返回信息 + */ + REVERSE_PROMPT_TRANSLATE_RETURN: 'REVERSE_PROMPT_TRANSLATE_RETURN', + + //#endregion + }, SYSTEM: { OPEN_FILE: 'OPEN_FILE', diff --git a/src/main/Service/Book/ReverseBook.ts b/src/main/Service/Book/ReverseBook.ts index f9b3324..3982ac8 100644 --- a/src/main/Service/Book/ReverseBook.ts +++ b/src/main/Service/Book/ReverseBook.ts @@ -19,6 +19,7 @@ import { MJOpt } from '../MJ/mj' import { TagDefine } from '../../../define/tagDefine' import { BookServiceBasic } from '../ServiceBasic/bookServiceBasic' import { SDOpt } from '../SD/sd' +import { isEmpty } from 'lodash' @@ -126,6 +127,16 @@ export class ReverseBook { async GetBookTaskDetail(bookTaskId: string): Promise { try { let res = await this.bookServiceBasic.GetBookTaskDetailData({ bookTaskId: bookTaskId }) + + // 这边再所有的图片后面添加后缀,这样可以保证图片实时更新 + res = res.map(item => { + return { + ...item, + outImagePath: isEmpty(item.outImagePath) ? item.outImagePath : item.outImagePath + '?t=' + new Date().getTime(), + subImagePath: item.subImagePath && item.subImagePath.length > 0 ? item.subImagePath.map(it => it + '?t=' + new Date().getTime()) : item.subImagePath + } + }) + return successMessage(res, '获取小说任务详情成功', 'ReverseBook_GetBookTaskDetail') } catch (error) { return errorMessage( @@ -287,7 +298,7 @@ export class ReverseBook { throw new Error("暂不支持的推理类型") } // 添加后台任务 - await this.bookServiceBasic.AddBookBackTask(book.id, task_type, TaskExecuteType.AUTO, bookTaskDetail.bookTaskId, bookTaskDetail.id + await this.bookServiceBasic.AddBookBackTask(book.id, task_type, TaskExecuteType.AUTO, bookTaskDetail.bookTaskId, bookTaskDetail.id, DEFINE_STRING.BOOK.REVERSE_PROMPT_RETURN ); // 添加返回日志 await this.taskScheduler.AddLogToDB(book.id, book.type, `添加 ${task_type} 反推任务成功`, bookTaskDetail.bookTaskId, LoggerStatus.SUCCESS) diff --git a/src/main/Service/Book/bookGeneral.ts b/src/main/Service/Book/bookGeneral.ts index 9fac188..0a12f27 100644 --- a/src/main/Service/Book/bookGeneral.ts +++ b/src/main/Service/Book/bookGeneral.ts @@ -32,12 +32,14 @@ export class BookGeneral { let afterGpt = element.afterGpt let subValue = element.subValue if (subValue && subValue.length > 0) { - subValue = subValue.map(item => { - return { - ...item, - srt_value: item.srt_value.replaceAll(replaceData.before, replaceData.after) - } - }) + if (Array.isArray(subValue)) { + subValue = subValue.map(item => { + return { + ...item, + srt_value: item.srt_value.replaceAll(replaceData.before, replaceData.after) + } + }) + } let btd = realm.objectForPrimaryKey('BookTaskDetail', element.id) btd.subValue = JSON.stringify(subValue); result.push({ @@ -184,6 +186,9 @@ export class BookGeneral { async ReplaceBookData(bookTaskId: string, replaceData: Book.BookReplaceData): Promise { try { console.log(bookTaskId, replaceData) + if (isEmpty(replaceData.after)) { + replaceData.after = '' // 默认为空 + } let bookTask = await this.bookServiceBasic.GetBookTaskDataById(bookTaskId) let bookTaskDetails = await this.bookServiceBasic.GetBookTaskDetailData({ bookTaskId: bookTaskId diff --git a/src/main/Service/Book/bookImage.ts b/src/main/Service/Book/bookImage.ts index ba7b023..a16f0e9 100644 --- a/src/main/Service/Book/bookImage.ts +++ b/src/main/Service/Book/bookImage.ts @@ -255,7 +255,7 @@ export class BookImage { case BookImageCategory.SD: throw new Error('暂时不支持SD的生成') case BookImageCategory.MJ: - res = await this.mjOpt.AddMJGenerateImageTask(bookTaskId, OperateBookType.BOOKTASK) + res = await this.mjOpt.AddMJGenerateImageTask(bookTaskId, OperateBookType.BOOKTASK, DEFINE_STRING.BOOK.MJ_IMAGE_GENERATE_RETURN) break; case BookImageCategory.D3: throw new Error('暂时不支持D3的生成') diff --git a/src/main/Service/Book/bookTask.ts b/src/main/Service/Book/bookTask.ts index c2a002b..ace4a6e 100644 --- a/src/main/Service/Book/bookTask.ts +++ b/src/main/Service/Book/bookTask.ts @@ -278,9 +278,9 @@ export class BookTask { throw new Error("没有找到对应的数小说任务,请检查数据") } // 获取所有的出图中最少的 - let bookTaskDetail = (await this.bookServiceBasic.GetBookTaskDetailData({ + let bookTaskDetail = await this.bookServiceBasic.GetBookTaskDetailData({ bookTaskId: bookTaskId - })) as Book.SelectBookTaskDetail[] + }) as Book.SelectBookTaskDetail[] if (bookTaskDetail == null || bookTaskDetail.length <= 0) { throw new Error("没有对应的小说分镜任务,请先添加分镜任务") } diff --git a/src/main/Service/ServiceBasic/bookServiceBasic.ts b/src/main/Service/ServiceBasic/bookServiceBasic.ts index 47b86b6..6ac0d73 100644 --- a/src/main/Service/ServiceBasic/bookServiceBasic.ts +++ b/src/main/Service/ServiceBasic/bookServiceBasic.ts @@ -277,6 +277,7 @@ export class BookServiceBasic { * @param executeType 执行的类型,是不是自动执行 * @param bookTaskId 小说批次任务ID * @param bookTaskDetailId 小说批次任务分镜ID + * @param responseMessageName 消息名称 */ async AddBookBackTask(bookId: string, taskType: BookBackTaskType, diff --git a/src/main/Service/Subtitle/subtitle.ts b/src/main/Service/Subtitle/subtitle.ts index 4283566..5ceeef0 100644 --- a/src/main/Service/Subtitle/subtitle.ts +++ b/src/main/Service/Subtitle/subtitle.ts @@ -23,6 +23,7 @@ import axios from 'axios' import { GptService } from '../GPT/gpt' import FormData from 'form-data' import { RetryWithBackoff } from '../../../define/Tools/common' +import { DEFINE_STRING } from '../../../define/define_string' const util = require('util') const { exec } = require('child_process') const execAsync = util.promisify(exec) @@ -119,7 +120,7 @@ export class Subtitle { content: content, progress: progress } as GeneralResponse.SubtitleProgressResponse // 返回识别到的文案 - }) + }, DEFINE_STRING.BOOK.GET_COPYWRITING_RETURN) // 添加日志 await this.taskScheduler.AddLogToDB( diff --git a/src/main/setting/gptSetting.ts b/src/main/setting/gptSetting.ts index e44c3df..371726d 100644 --- a/src/main/setting/gptSetting.ts +++ b/src/main/setting/gptSetting.ts @@ -29,17 +29,17 @@ export class GptSetting extends ServiceBase { async InitAISetting() { let defaultData = { laiapi: { - gpt_url: 'https://laitool.net/v1/chat/completions', + gpt_url: 'https://api.laitool.cc', api_key: "请输入你的LAI API 的 Key", model: "请输入你的LAI API 的 Model名称" }, kimi: { - gpt_url: 'https://api.moonshot.cn/v1/chat/completions', + gpt_url: 'https://api.moonshot.cn', api_key: "请输入你的Kimi API 的 Key", model: "请输入你的Kimi API 的 Model名称" }, doubao: { - gpt_url: 'https://ark.cn-beijing.volces.com/api/v3/chat/completions', + gpt_url: 'https://ark.cn-beijing.volces.com/api', api_key: "请输入你的Doubao API 的 Key", model: "请输入你的Doubao API 的 Model名称" } diff --git a/src/renderer/src/App.vue b/src/renderer/src/App.vue index 4da74ce..fde8bdd 100644 --- a/src/renderer/src/App.vue +++ b/src/renderer/src/App.vue @@ -3,7 +3,7 @@ @@ -44,6 +44,7 @@ export default defineComponent({ let softwareStore = useSoftwareStore() onMounted(async () => { + debugger softwareStore.SoftColor = SoftColor window.api.getSettingDafultData(async (value) => { await window.darkMode.toggle(value.theme) @@ -60,6 +61,7 @@ export default defineComponent({ throw new Error('初始化信息错误: 未获取到数据') } softwareStore.softWare = software.data + console.log(softwareStore.softWare) await window.darkMode.toggle(softwareStore.softWare.theme) }) diff --git a/src/renderer/src/components/Book/Components/DatatableGenerateImage.vue b/src/renderer/src/components/Book/Components/DatatableGenerateImage.vue index 33b80b6..447e3bc 100644 --- a/src/renderer/src/components/Book/Components/DatatableGenerateImage.vue +++ b/src/renderer/src/components/Book/Components/DatatableGenerateImage.vue @@ -164,7 +164,9 @@ watch( watch( () => props.initData.outImagePath, (value) => { - outImagePath.value = value + `?t=${new Date().getTime()}` + if (value) { + outImagePath.value = value + `?t=${new Date().getTime()}` + } } ) @@ -180,7 +182,9 @@ watch( onMounted(async () => { setNodeAttribute() - outImagePath.value = outImagePath.value + `?t=${new Date().getTime()}` + if (!isEmpty(outImagePath.value)) { + outImagePath.value = outImagePath.value + `?t=${new Date().getTime()}` + } }) async function setNodeAttribute() { @@ -246,10 +250,13 @@ async function imageDragOver(e) { } async function ModifyLock() { - // 锁定之前,判断是不是有 - if (!outImagePath.value) { - message.error('没有生成图片,不能锁定') - return + debugger + if (!data.value.imageLock) { + // 锁定之前,判断是不是有 + if (!outImagePath.value) { + message.error('没有生成图片,不能锁定') + return + } } let lock = !data.value.imageLock @@ -283,6 +290,10 @@ async function DownloadImage() { message.error('当前图片不是MJ图片,不能下载') return } + if (!data.value.mjMessage) { + message.error('没有MJ生图信息,不能下载') + return + } // 只要状态不是success 和 error ,其他的都重新获取 if (data.value.mjMessage.status == 'error') { message.error('失败状态不能采集图片') diff --git a/src/renderer/src/components/Book/Components/DatatableGptPromptButton.vue b/src/renderer/src/components/Book/Components/DatatableGptPromptButton.vue index 5d22dae..4f40587 100644 --- a/src/renderer/src/components/Book/Components/DatatableGptPromptButton.vue +++ b/src/renderer/src/components/Book/Components/DatatableGptPromptButton.vue @@ -36,6 +36,7 @@ import { ContainsChineseOrPunctuation } from '../../../../../define/Tools/common import ReSelectReversePrompt from '../MJReverse/ReSelectReversePrompt.vue' import { OperateBookType } from '../../../../../define/enum/bookEnum' import { isEmpty } from 'lodash' +import { DEFINE_STRING } from '../../../../../define/define_string' export default defineComponent({ components: { NDropdown, NButton }, @@ -127,7 +128,8 @@ export default defineComponent({ to: to, type: TranslateType.GPT_PROMPT_TRANSLATE, isSplit: false, // 该参数设置为true时,会将文本按照标点符号分割成多个句子进行翻译 - bookTaskDetailId: data.value.id + bookTaskDetailId: data.value.id, + responseMessgeName: DEFINE_STRING.BOOK.REVERSE_PROMPT_TRANSLATE_RETURN }) } else { let reversePrompt = data.value.reversePrompt @@ -147,7 +149,8 @@ export default defineComponent({ type: TranslateType.REVERSE_PROMPT_TRANSLATE, isSplit: false, // 该参数设置为true时,会将文本按照标点符号分割成多个句子进行翻译 bookTaskDetailId: data.value.id, - reversePromptId: item.id + reversePromptId: item.id, + responseMessgeName: DEFINE_STRING.BOOK.REVERSE_PROMPT_TRANSLATE_RETURN } translateData.push(temp_obj) @@ -171,7 +174,8 @@ export default defineComponent({ to: to, type: TranslateType.GPT_PROMPT_TRANSLATE, isSplit: false, // 该参数设置为true时,会将文本按照标点符号分割成多个句子进行翻译 - bookTaskDetailId: element.id + bookTaskDetailId: element.id, + responseMessgeName: DEFINE_STRING.BOOK.REVERSE_PROMPT_TRANSLATE_RETURN }) } else { let reversePrompt = element.reversePrompt @@ -191,7 +195,8 @@ export default defineComponent({ type: TranslateType.REVERSE_PROMPT_TRANSLATE, isSplit: false, // 该参数设置为true时,会将文本按照标点符号分割成多个句子进行翻译 bookTaskDetailId: element.id, - reversePromptId: item.id + reversePromptId: item.id, + responseMessgeName: DEFINE_STRING.BOOK.REVERSE_PROMPT_TRANSLATE_RETURN } translateData.push(temp_obj) }) diff --git a/src/renderer/src/components/Book/Components/DatatablePrompt.vue b/src/renderer/src/components/Book/Components/DatatablePrompt.vue index fcaf044..8eefb3f 100644 --- a/src/renderer/src/components/Book/Components/DatatablePrompt.vue +++ b/src/renderer/src/components/Book/Components/DatatablePrompt.vue @@ -54,6 +54,7 @@ import { OperateBookType } from '../../../../../define/enum/bookEnum' import { BookImageCategory } from '../../../../../define/enum/bookEnum' import { debounce } from 'lodash' import InputDialogContent from '../../Original/Components/InputDialogContent.vue' +import { DEFINE_STRING } from '../../../../../define/define_string' export default defineComponent({ components: { NInput, NButton, NDropdown }, @@ -104,7 +105,11 @@ export default defineComponent({ async function SingleGenerateImage() { let res = undefined if (reverseManageStore.selectBookTask.imageCategory == BookImageCategory.MJ) { - res = await window.mj.AddMJGenerateImageTask(data.value.id, OperateBookType.BOOKTASKDETAIL) + res = await window.mj.AddMJGenerateImageTask( + data.value.id, + OperateBookType.BOOKTASKDETAIL, + DEFINE_STRING.BOOK.MJ_IMAGE_GENERATE_RETURN + ) } else if (reverseManageStore.selectBookTask.imageCategory == BookImageCategory.SD) { // res = await window.sd.SingleGenerateImage(data.value.id, OperateBookType.BOOKTASKDETAIL) message.error('暂不支该出图模式') @@ -123,7 +128,11 @@ export default defineComponent({ async function UnderGenerateImage() { let res = undefined if (reverseManageStore.selectBookTask.imageCategory == BookImageCategory.MJ) { - res = await window.mj.AddMJGenerateImageTask(data.value.id, OperateBookType.UNDERBOOKTASK) + res = await window.mj.AddMJGenerateImageTask( + data.value.id, + OperateBookType.UNDERBOOKTASK, + DEFINE_STRING.BOOK.MJ_IMAGE_GENERATE_RETURN + ) } else if (reverseManageStore.selectBookTask.imageCategory == BookImageCategory.SD) { // res = await window.sd.SingleGenerateImage(data.value.id, OperateBookType.UNDERBOOKTASK) message.error('暂不支该出图模式') diff --git a/src/renderer/src/components/Book/Components/ManageBook/ManageBookShowLogger.vue b/src/renderer/src/components/Book/Components/ManageBook/ManageBookShowLogger.vue index 47e27a0..564c711 100644 --- a/src/renderer/src/components/Book/Components/ManageBook/ManageBookShowLogger.vue +++ b/src/renderer/src/components/Book/Components/ManageBook/ManageBookShowLogger.vue @@ -2,7 +2,7 @@
{ - window.api.setEventListen([DEFINE_STRING.BOOK.GET_COPYWRITING_RETURN], (value) => { - debugger - if (value.code == 0) { - message.error(value.message) - code.value = code.value + '\n' + value.data - return - } - // 修改进度 - softwareStore.spin.tip = `正在提取文案,当前进度 ${value.data.progress.current} / ${value.data.progress.total} 。。。` - let index = reverseManageStore.selectBookTaskDetail.findIndex((item) => item.id == value.id) - if (index >= 0) { - reverseManageStore.selectBookTaskDetail[index].word = value.data.content - reverseManageStore.selectBookTaskDetail[index].afterGpt = value.data.content - } - }) - - window.api.setEventListen([DEFINE_STRING.BOOK.REMOVE_WATERMARK_RETURN], (value) => { - if (value.code == 0) { - message.error(value.message) - return - } - let index = reverseManageStore.selectBookTaskDetail.findIndex((item) => item.id == value.id) - if (index >= 0) { - reverseManageStore.selectBookTaskDetail[index].oldImage = - value.data + '?time=' + new Date().getTime() - } - }) - }) + onMounted(async () => {}) // 返回主页 function RetuenMain() { @@ -696,7 +668,8 @@ export default defineComponent({ to: to, type: TranslateType.GPT_PROMPT_TRANSLATE, isSplit: false, // 该参数设置为true时,会将文本按照标点符号分割成多个句子进行翻译 - bookTaskDetailId: element.id + bookTaskDetailId: element.id, + responseMessgeName: DEFINE_STRING.BOOK.REVERSE_PROMPT_TRANSLATE_RETURN }) } else { let reversePrompt = element.reversePrompt @@ -715,7 +688,8 @@ export default defineComponent({ type: TranslateType.REVERSE_PROMPT_TRANSLATE, isSplit: false, // 该参数设置为true时,会将文本按照标点符号分割成多个句子进行翻译 bookTaskDetailId: element.id, - reversePromptId: item.id + reversePromptId: item.id, + responseMessgeName: DEFINE_STRING.BOOK.REVERSE_PROMPT_TRANSLATE_RETURN } translateData.push(temp_obj) }) diff --git a/src/renderer/src/components/Book/Components/MonitorStatus.vue b/src/renderer/src/components/Book/Components/MonitorStatus.vue index b23cda6..cc202fe 100644 --- a/src/renderer/src/components/Book/Components/MonitorStatus.vue +++ b/src/renderer/src/components/Book/Components/MonitorStatus.vue @@ -86,7 +86,6 @@ let test = ref('error-class') // 计算所有的数据的百分比 function ComputePercentage() { - debugger if ( reverseManageStore && reverseManageStore.selectBookTaskDetail && diff --git a/src/renderer/src/components/Book/MJReverse/ManageBookReverseTable.vue b/src/renderer/src/components/Book/MJReverse/ManageBookReverseTable.vue index d0e0e57..7856fb2 100644 --- a/src/renderer/src/components/Book/MJReverse/ManageBookReverseTable.vue +++ b/src/renderer/src/components/Book/MJReverse/ManageBookReverseTable.vue @@ -25,6 +25,7 @@ import DatatableHeaderPrompt from '../Components/DatatableHeaderPrompt.vue' import DatatablePrompt from '../Components/DatatablePrompt.vue' import DatatableHeaderImage from '../Components/DatatableHeaderImage.vue' import DatatableAfterGpt from '../Components/DatatableAfterGpt.vue' +import DatatableGenerateImage from '../Components/DatatableGenerateImage.vue' export default defineComponent({ components: { NDataTable, NImage }, @@ -120,7 +121,7 @@ export default defineComponent({ width: 300, className: 'space-row', render(row, index) { - return h(DataTableShowGenerateImage, { + return h(DatatableGenerateImage, { image_generate_category: 'mj', initData: row, index: index, @@ -157,7 +158,7 @@ export default defineComponent({ debugger // 视口的高度 let height = window.innerHeight - maxHeight.value = height - 100 + maxHeight.value = height - 120 } return { diff --git a/src/renderer/src/components/Book/ManageBookDetail.vue b/src/renderer/src/components/Book/ManageBookDetail.vue index 484d6be..4b1b6f9 100644 --- a/src/renderer/src/components/Book/ManageBookDetail.vue +++ b/src/renderer/src/components/Book/ManageBookDetail.vue @@ -49,53 +49,92 @@ export default defineComponent({ let reverseManageStore = useReverseManageStore() let bookType = ref(BookType) onMounted(async () => { - // 添加一个总的监听器,主要监听后端数据变化,修改后端数据后,前端数据也会随之变化 - if (!window['mainReturn']) { - window.mainReturn = true - window.api.setEventListen([DEFINE_STRING.BOOK.MAIN_DATA_RETURN], (value) => { - // 这边是不监听的数据 - if (value.type == ResponseMessageType.HD_IMAGE) { + // 监听提取文案的返回数据 + window.api.setEventListen([DEFINE_STRING.BOOK.GET_COPYWRITING_RETURN], (value) => { + if (value.code == 0) { + message.error(value.message) + code.value = code.value + '\n' + value.data + return + } + // 修改进度 + softwareStore.spin.tip = `正在提取文案,当前进度 ${value.data.progress.current} / ${value.data.progress.total} 。。。` + let index = reverseManageStore.selectBookTaskDetail.findIndex((item) => item.id == value.id) + if (index >= 0) { + reverseManageStore.selectBookTaskDetail[index].word = value.data.content + reverseManageStore.selectBookTaskDetail[index].afterGpt = value.data.content + } + }) + + // 监听删除水印的返回的图片数据 + window.api.setEventListen([DEFINE_STRING.BOOK.REMOVE_WATERMARK_RETURN], (value) => { + if (value.code == 0) { + message.error(value.message) + return + } + let index = reverseManageStore.selectBookTaskDetail.findIndex((item) => item.id == value.id) + if (index >= 0) { + reverseManageStore.selectBookTaskDetail[index].oldImage = + value.data + '?time=' + new Date().getTime() + } + }) + + // 监听反推提示词的返回数据 + window.api.setEventListen([DEFINE_STRING.BOOK.REVERSE_PROMPT_RETURN], (value) => { + if (value.code == 0) { + errorResponse(value) + } else { + MJReverseResponse(value) + } + }) + + // 监听MJ出图的返回信息 + window.api.setEventListen([DEFINE_STRING.BOOK.MJ_IMAGE_GENERATE_RETURN], (value) => { + if (value.code == 0) { + errorResponse(value) + } + MJImageResponse(value) + }) + + // 监听反推的翻译数据返回 + window.api.setEventListen([DEFINE_STRING.BOOK.REVERSE_PROMPT_TRANSLATE_RETURN], (value) => { + if (value.code == 0) { + errorResponse(value) + } else { + if (value.type == ResponseMessageType.REVERSE_PROMPT_TRANSLATE) { + ReversePromptTranslateResponse(value) + } else if (value.type == ResponseMessageType.GPT_PROMPT_TRANSLATE) { + GptPromptTranslateResponse(value) + } else { + message.error('错误的返回数据类型') return } - if (value.code == 0) { - switch (value.dialogType) { - case DialogType.DIALOG: - window.api.showGlobalMessageDialog(value) - break - case DialogType.MESSAGE: - message.error(value.message) - break - case DialogType.NOTIFICATION: - window.api.showGlobalNotificationDialog(value) - break - default: - window.api.showGlobalNotificationDialog(value) - break - } - } + } + }) + }) - // 执行对应的方法,修改数据 - switch (value.type) { - case ResponseMessageType.MJ_REVERSE: // MJ反推的数据返回处理 - MJReverseResponse(value) - break - case ResponseMessageType.REVERSE_PROMPT_TRANSLATE: // 翻译反推提示词的数据处理 - ReversePromptTranslateResponse(value) - break - case ResponseMessageType.GPT_PROMPT_TRANSLATE: // GPT提示词翻译返回 - GptPromptTranslateResponse(value) - break - case ResponseMessageType.MJ_IMAGE: - MJImageResponse(value) - break - case ResponseMessageType.HD_IMAGE: - break - default: - message.error('未知的返回数据类型') - break - } - }) + function errorResponse(value) { + switch (value.dialogType) { + case DialogType.DIALOG: + window.api.showGlobalMessageDialog(value) + break + case DialogType.MESSAGE: + message.error(value.message) + break + case DialogType.NOTIFICATION: + window.api.showGlobalNotificationDialog(value) + break + default: + window.api.showGlobalNotificationDialog(value) + break } + } + + onUnmounted(() => { + window.api.removeEventListen(DEFINE_STRING.BOOK.GET_COPYWRITING_RETURN) + window.api.removeEventListen(DEFINE_STRING.BOOK.REMOVE_WATERMARK_RETURN) + window.api.removeEventListen(DEFINE_STRING.BOOK.REVERSE_PROMPT_RETURN) + window.api.removeEventListen(DEFINE_STRING.BOOK.MJ_IMAGE_GENERATE_RETURN) + window.api.removeEventListen(DEFINE_STRING.BOOK.REVERSE_PROMPT_TRANSLATE_RETURN) }) function MJImageResponse(value) { @@ -105,7 +144,7 @@ export default defineComponent({ (item) => item.id == value.data.id ) if (dataIndex >= 0) { - reverseManageStore.selectBookTaskDetail[dataIndex].mj_message = value.data + reverseManageStore.selectBookTaskDetail[dataIndex].mjMessage = value.data reverseManageStore.selectBookTaskDetail[dataIndex].outImagePath = value.data.outImagePath reverseManageStore.selectBookTaskDetail[dataIndex].subImagePath = value.data.subImagePath } @@ -166,15 +205,15 @@ export default defineComponent({ return } reverseManageStore.selectBookTaskDetail[index].gptPrompt = value.data.prompt + // 这边也要修改进度 + softwareStore.spin.tip = `翻译中 ... ${value.data.progress} / ${value.data.total}` } /** * MJ反推返回数据 */ function MJReverseResponse(value) { - console.log('MJReverseResponse', value) if (value.data && value.data.progress == 100) { - debugger let dataIndex = reverseManageStore.selectBookTaskDetail.findIndex( (item) => item.id == value.data.id ) diff --git a/src/renderer/src/components/Book/Original/ODataTableGptPrompt.vue b/src/renderer/src/components/Book/Original/ODataTableGptPrompt.vue index 6259483..e9e21ca 100644 --- a/src/renderer/src/components/Book/Original/ODataTableGptPrompt.vue +++ b/src/renderer/src/components/Book/Original/ODataTableGptPrompt.vue @@ -101,7 +101,7 @@ async function TranslateSelect(key) { const element = reverseManageStore.selectBookTaskDetail[i] if (i >= props.index) { translateData.push({ - text: row.value.gptPrompt, + text: element.gptPrompt, from: 'en', to: 'zh', type: TranslateType.GPT_PROMPT_TRANSLATE, @@ -116,7 +116,7 @@ async function TranslateSelect(key) { const element = reverseManageStore.selectBookTaskDetail[i] if (i >= props.index) { translateData.push({ - text: row.value.gptPrompt, + text: element.gptPrompt, from: 'zh', to: 'en', type: TranslateType.GPT_PROMPT_TRANSLATE, diff --git a/src/renderer/src/components/Setting/Setting.vue b/src/renderer/src/components/Setting/Setting.vue index d42fc43..8a46f12 100644 --- a/src/renderer/src/components/Setting/Setting.vue +++ b/src/renderer/src/components/Setting/Setting.vue @@ -209,7 +209,7 @@ export default defineComponent({ translation_app_id: window.config.translation_app_id, translation_secret: window.config.translation_secret, translation_auto: window.config.translation_auto, - theme: softwareStore.softWare.theme, + theme: softwareStore.globalSetting.theme, character_select_model: window.config.character_select_model, window_wh_bm_remember: window.config.window_wh_bm_remember, laiApiSelect: window.config.laiApiSelect ? window.config.laiApiSelect : LaiAPIType.MAIN