LaiTool V 3.1.4

This commit is contained in:
2024-09-20 09:19:37 +08:00
parent 595cbe8374
commit 92c1d99efd
24 changed files with 202 additions and 115 deletions
+3 -1
View File
@@ -3,7 +3,7 @@
<template #description> {{ softwareStore.spin.tip }} </template>
<n-config-provider
:hljs="hljs"
:theme="softwareStore.softWare.theme == 'dark' ? darkTheme : null"
:theme="softwareStore.globalSetting.theme == 'dark' ? darkTheme : null"
>
<n-message-provider>
<n-dialog-provider>
@@ -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)
})
@@ -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('失败状态不能采集图片')
@@ -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)
})
@@ -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('暂不支该出图模式')
@@ -2,7 +2,7 @@
<div class="artplayer-app" style="height: 100%">
<Artplayer @get-instance="getInstance" :option="option" :style="palyarStyle" />
<n-log
style="height: 60%; background-color: #f8f8f8; margin-top: 10px"
style="height: 60%; width: 280px; background-color: #f8f8f8; margin-top: 10px"
ref="logInst"
:log="logger"
:loading="loading"
@@ -157,35 +157,7 @@ export default defineComponent({
let reverseManageStore = useReverseManageStore()
let softwareStore = useSoftwareStore()
// 获取当前这个界面的数据
onMounted(async () => {
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)
})
@@ -86,7 +86,6 @@ let test = ref('error-class')
// 计算所有的数据的百分比
function ComputePercentage() {
debugger
if (
reverseManageStore &&
reverseManageStore.selectBookTaskDetail &&
@@ -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 {
@@ -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
)
@@ -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,
@@ -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