164 lines
5.1 KiB
Vue
164 lines
5.1 KiB
Vue
<template>
|
|
<div>
|
|
<n-dropdown trigger="hover" :options="translate_options" @select="TranslateSelect">
|
|
<n-button
|
|
size="tiny"
|
|
:color="softwareStore.SoftColor.BROWN_YELLOW"
|
|
style="margin-right: 5px"
|
|
@click="TranslateSelect('english')"
|
|
>翻译英文</n-button
|
|
>
|
|
</n-dropdown>
|
|
<n-button
|
|
size="tiny"
|
|
:color="softwareStore.SoftColor.BROWN_YELLOW"
|
|
style="margin-right: 5px"
|
|
@click="SinglePrompt"
|
|
>单句推理</n-button
|
|
>
|
|
<n-button
|
|
:color="softwareStore.SoftColor.BROWN_YELLOW"
|
|
style="margin-right: 5px"
|
|
size="tiny"
|
|
@click="NextGptPrompt"
|
|
>下推理</n-button
|
|
>
|
|
<n-input
|
|
size="tiny"
|
|
placeholder="请生成或推理提示词"
|
|
type="textarea"
|
|
v-model:value="row.gptPrompt"
|
|
@input="InputDebounced"
|
|
:autosize="{ minRows: 6, maxRows: 6 }"
|
|
/>
|
|
</div>
|
|
</template>
|
|
|
|
<script setup>
|
|
import { ref } from 'vue'
|
|
import { NInput, NButton, NDropdown, useMessage } from 'naive-ui'
|
|
import { debounce } from 'lodash'
|
|
import { TranslateType } from '../../../../../define/enum/translate'
|
|
import { DEFINE_STRING } from '../../../../../define/define_string'
|
|
import { useSoftwareStore } from '../../../../../stores/software'
|
|
import { useReverseManageStore } from '../../../../../stores/reverseManage'
|
|
import { OperateBookType } from '../../../../../define/enum/bookEnum'
|
|
|
|
let props = defineProps({
|
|
initData: undefined,
|
|
index: undefined
|
|
})
|
|
let message = useMessage()
|
|
let row = ref(props.initData)
|
|
let softwareStore = useSoftwareStore()
|
|
let reverseManageStore = useReverseManageStore()
|
|
|
|
let translate_options = ref([
|
|
{ label: '翻译中文', key: 'chinese' },
|
|
{ label: '下翻译 英文 2 中文', key: 'down_english_chinese' },
|
|
{ label: '下翻译 中文 2 英文', key: 'down_chinese_english' }
|
|
])
|
|
|
|
let InputDebounced = debounce(handleInput, 500)
|
|
async function handleInput() {
|
|
console.log('开始修改')
|
|
let res = await window.db.UpdateBookTaskDetailData(row.value.id, {
|
|
gptPrompt: row.value.gptPrompt
|
|
})
|
|
if (res.code == 0) {
|
|
message.error(res.message)
|
|
}
|
|
}
|
|
|
|
// 单句翻译和下翻译
|
|
async function TranslateSelect(key) {
|
|
let translateData = []
|
|
if (key == 'english') {
|
|
let tempData = {
|
|
text: row.value.gptPrompt,
|
|
from: 'zh',
|
|
to: 'en',
|
|
type: TranslateType.GPT_PROMPT_TRANSLATE,
|
|
isSplit: false,
|
|
bookTaskDetailId: row.value.id,
|
|
responseMessgeName: DEFINE_STRING.TRANSLATE.GPT_PROMPT_TRANSLATE_RETRUN
|
|
}
|
|
translateData.push(tempData)
|
|
} else if (key == 'chinese') {
|
|
let tempData = {
|
|
text: row.value.gptPrompt,
|
|
from: 'en',
|
|
to: 'zh',
|
|
type: TranslateType.GPT_PROMPT_TRANSLATE,
|
|
isSplit: false,
|
|
bookTaskDetailId: row.value.id,
|
|
responseMessgeName: DEFINE_STRING.TRANSLATE.GPT_PROMPT_TRANSLATE_RETRUN
|
|
}
|
|
translateData.push(tempData)
|
|
} else if (key == 'down_english_chinese') {
|
|
// 讲下面的所有的进行翻译
|
|
for (let i = 0; i < reverseManageStore.selectBookTaskDetail.length; i++) {
|
|
const element = reverseManageStore.selectBookTaskDetail[i]
|
|
if (i >= props.index) {
|
|
translateData.push({
|
|
text: element.gptPrompt,
|
|
from: 'en',
|
|
to: 'zh',
|
|
type: TranslateType.GPT_PROMPT_TRANSLATE,
|
|
isSplit: false,
|
|
bookTaskDetailId: element.id,
|
|
responseMessgeName: DEFINE_STRING.TRANSLATE.GPT_PROMPT_TRANSLATE_RETRUN
|
|
})
|
|
}
|
|
}
|
|
} else if (key == 'down_chinese_english') {
|
|
for (let i = 0; i < reverseManageStore.selectBookTaskDetail.length; i++) {
|
|
const element = reverseManageStore.selectBookTaskDetail[i]
|
|
if (i >= props.index) {
|
|
translateData.push({
|
|
text: element.gptPrompt,
|
|
from: 'zh',
|
|
to: 'en',
|
|
type: TranslateType.GPT_PROMPT_TRANSLATE,
|
|
isSplit: false,
|
|
bookTaskDetailId: element.id,
|
|
responseMessgeName: DEFINE_STRING.TRANSLATE.GPT_PROMPT_TRANSLATE_RETRUN
|
|
})
|
|
}
|
|
}
|
|
} else {
|
|
message.error('未知的翻译类型')
|
|
}
|
|
|
|
if (translateData.length <= 0) {
|
|
message.error('没有需要翻译的数据')
|
|
return
|
|
}
|
|
// 开始提交翻译任务
|
|
softwareStore.spin.spinning = true
|
|
softwareStore.spin.tip = `翻译中 ... 0 / ${translateData.length}`
|
|
// 开始翻译
|
|
let res = await window.translate.TranslateNowReturn(translateData)
|
|
softwareStore.spin.spinning = false
|
|
window.api.showGlobalMessageDialog(res)
|
|
}
|
|
|
|
// 单句推理
|
|
async function SinglePrompt() {
|
|
softwareStore.spin.spinning = true
|
|
softwareStore.spin.tip = '即将开始执行推理提示词任务,请稍等。。。'
|
|
let res = await window.book.OriginalGetPrompt(row.value.id, OperateBookType.BOOKTASKDETAIL, true)
|
|
softwareStore.spin.spinning = false
|
|
window.api.showGlobalMessage(res)
|
|
}
|
|
|
|
// 下推理
|
|
async function NextGptPrompt() {
|
|
softwareStore.spin.spinning = true
|
|
softwareStore.spin.tip = '即将开始执行推理提示词任务,请稍等。。。'
|
|
let res = await window.book.OriginalGetPrompt(row.value.id, OperateBookType.UNDERBOOKTASK, true)
|
|
softwareStore.spin.spinning = false
|
|
window.api.showGlobalMessage(res)
|
|
}
|
|
</script>
|