V 3.0.1 LaiTool V3.0.1-preview.4

This commit is contained in:
2024-08-09 12:28:28 +08:00
parent 36178fbe5d
commit f64c7ad677
14 changed files with 395 additions and 765 deletions
@@ -6,6 +6,7 @@
<n-select
style="width: 160px"
v-model:value="formValue.gptType"
@update:value="UpdateSelectPromptType"
:options="gptTypeOptions"
placeholder="请选择提示词类型"
>
@@ -88,6 +89,7 @@ export default defineComponent({
{ label: 'DouBao', value: 'doubao' }
])
let softwareStore = useSoftwareStore()
let allPromptDataOptions = ref([])
// 加载服务端数据
async function InitServerGptOptions() {
@@ -105,6 +107,7 @@ export default defineComponent({
gptDataOptions.value = gptRes.data.promptData.map((item) => {
return { label: item.name, value: item.id }
})
allPromptDataOptions.value = gptRes.data.promptData
}
onMounted(async () => {
@@ -134,7 +137,6 @@ export default defineComponent({
* AI设置相关
*/
async function AISetting() {
debugger
// 判断当前数据是不是存在
// 处理数据。获取当前的所有的数据
let dialogWidth = 800
@@ -172,14 +174,29 @@ export default defineComponent({
softwareStore.spin.spinning = false
return
}
newWord.value = res.data
}
/**
* 选择的提示词类型发生变化时,删选提示词预设
* @param value
* @param options
*/
async function UpdateSelectPromptType(value, options) {
gptDataOptions.value = allPromptDataOptions.value
.filter((item) => {
return item.promptTypeId == value
})
.map((item) => {
return { label: item.name, value: item.id }
})
}
return {
formValue,
gptTypeOptions,
gptDataOptions,
UpdateSelectPromptType,
oldWord,
newWord,
rules,
@@ -187,7 +204,8 @@ export default defineComponent({
AISetting,
gptOptions,
softwareStore,
ActionStart
ActionStart,
allPromptDataOptions
}
}
})
@@ -165,7 +165,7 @@ export default defineComponent({
item.loading = false
item.timedata = new Date().getTime()
})
data.value = value.value
})
}
@@ -436,8 +436,10 @@ export default defineComponent({
await window.api.TranslatePrompt(
[JSON.stringify([row]), 'en', 'zh', window.id, false],
(value) => {
console.log(value)
if (value.code == 0) {
message.error(value.message)
return
}
}
)
}
@@ -559,12 +561,10 @@ export default defineComponent({
})
window.api.setEventListen([DEFINE_STRING.TRANSLATE_RETURN_REFRESH, window.id], (value) => {
if (value.code == 0) {
message.error('返回数据错误')
return
}
// 直接
let index = data.value.findIndex((item) => item.id == value.rowId)
@@ -620,8 +620,10 @@ export default defineComponent({
async function TranslatePrompt(translateData, from, to) {
console.log(translateData)
await window.api.TranslatePrompt([translateData, from, to, window.id, true], (value) => {
console.log(value)
if (value.code == 0) {
message.error(value.message)
return
}
})
}
@@ -629,7 +631,6 @@ export default defineComponent({
* 翻译中文到提示词
*/
async function TranslateChineseToPrompt() {
// 将当前的prompt和Chinese_prompt中的src全部删除(全部重新翻译)
let fileterData = []
for (let i = 0; i < data.value.length; i++) {
@@ -650,8 +651,10 @@ export default defineComponent({
let tmp_str = JSON.stringify(fileterData)
// 开始调用
await window.api.TranslatePrompt([tmp_str, 'zh', 'en', window.id, true], (value) => {
console.log(value)
if (value.code == 0) {
message.error(value.message)
return
}
})
}
@@ -780,7 +783,6 @@ export default defineComponent({
// 翻译立即返回
// 翻译单个。马上返回
await window.api.TranslateReturnNow([tmp_s, 'en', 'zh', true], (value) => {
console.log(value)
if (value.code == 0) {
message.error(value.message)
@@ -439,7 +439,7 @@ export default defineComponent({
dialog.create({
showIcon: false,
title: '翻译设置',
content: () => h(TranslateSetting),
content: () => h(TranslateSetting, { height: dialogHeight }),
style: `width : ${dialogWidth}px; height : ${dialogHeight}px`,
maskClosable: false
})
@@ -1,51 +1,60 @@
<template>
<div style="display: flex">
<div style="display: flex; align-items: center">
<div style="width: 200px">选择翻译服务商</div>
<n-select v-model:value="translateSetting.selectModel" :options="translateOptions"></n-select>
</div>
<div style="display: flex; align-items: center; margin-left: 20px">
<n-checkbox v-model:checked="translateSetting.translation_auto"> 是否自动翻译 </n-checkbox>
</div>
<div style="display: flex; align-items: center; margin-left: 20px">
<n-button :type="block ? 'warning' : 'primary'" @click="ModifyBlock">{{
block ? '解锁' : '锁定'
}}</n-button>
</div>
<div style="display: flex; align-items: center; margin-left: 20px">
<n-button type="error" @click="ResetTranslateSetting">重置数据</n-button>
</div>
<div style="display: flex; align-items: center; margin-left: 20px">
<n-button type="info" @click="SaveTranslateSetting">保存</n-button>
<div id="translate-setting">
<div style="display: flex">
<div style="display: flex; align-items: center">
<div style="width: 200px">选择翻译服务商</div>
<n-select
v-model:value="translateSetting.selectModel"
:options="translateOptions"
></n-select>
</div>
<div style="display: flex; align-items: center; margin-left: 20px">
<n-checkbox v-model:checked="translateSetting.translation_auto"> 是否自动翻译 </n-checkbox>
</div>
<div style="display: flex; align-items: center; margin-left: 20px">
<n-button :type="block ? 'warning' : 'primary'" @click="ModifyBlock">{{
block ? '解锁' : '锁定'
}}</n-button>
</div>
<div style="display: flex; align-items: center; margin-left: 20px">
<n-button type="error" @click="ResetTranslateSetting">重置数据</n-button>
</div>
<div style="display: flex; align-items: center; margin-left: 20px">
<n-button type="info" @click="SaveTranslateSetting">保存</n-button>
</div>
</div>
<n-card
v-for="item in translateSetting.translates"
style="margin-top: 10px"
:title="GetTranslationName(item.name)"
size="medium"
>
<n-form label-placement="left" inline="">
<n-form-item label="API URL">
<n-input
:disabled="block"
style="width: 250px"
v-model:value="item.translation_business"
/>
</n-form-item>
<n-form-item label="APP ID/应用ID">
<n-input
:type="item.name == 'laitool' ? 'text' : 'password'"
:show-password-on="mousedown"
v-model:value="item.translation_app_id"
/>
</n-form-item>
<n-form-item label="产品密钥:">
<n-input
type="password"
show-password-on="mousedown"
v-model:value="item.translation_secret"
/>
</n-form-item>
<!-- </div> -->
</n-form>
</n-card>
</div>
<n-card
v-for="item in translateSetting.translates"
style="margin-top: 10px"
:title="GetTranslationName(item.name)"
size="medium"
>
<n-form label-placement="left" inline="">
<n-form-item label="API URL">
<n-input :disabled="block" style="width: 250px" v-model:value="item.translation_business" />
</n-form-item>
<n-form-item label="APP ID/应用ID">
<n-input
type="password"
show-password-on="mousedown"
v-model:value="item.translation_app_id"
/>
</n-form-item>
<n-form-item label="产品密钥:">
<n-input
type="password"
show-password-on="mousedown"
v-model:value="item.translation_secret"
/>
</n-form-item>
<!-- </div> -->
</n-form>
</n-card>
</template>
<script>
@@ -65,13 +74,18 @@ import { TranslateAPIType } from '../../../../define/enum/translate'
export default defineComponent({
components: { NCard, NInput, NSelect, NButton, NCheckbox, NForm, NFormItem },
setup() {
props: ['height'],
setup(props) {
let message = useMessage()
let dialog = useDialog()
let translateSetting = ref({})
let block = ref(true)
let height = ref(props.height)
onMounted(async () => {
let div = document.getElementById('translate-setting')
div.style.height = height.value - 70 + 'px'
div.style.overflow = 'auto'
// 初始化加载数据
let translateSettingRes = await window.translate.GetTranslateSetting()
if (translateSettingRes.code == 0) {
@@ -83,6 +97,8 @@ export default defineComponent({
function GetTranslationName(name) {
switch (name) {
case 'laitool':
return 'Laitool GPT翻译'
case 'baidu':
return '百度翻译'
case 'tencent':
@@ -125,7 +141,7 @@ export default defineComponent({
// 判断当前选中的数据是不是设置完善
let selectModel = translateSetting.value.selectModel
let settingIndex = translateSetting.value.translates.findIndex(
(item) => (item.name == selectModel)
(item) => item.name == selectModel
)
if (settingIndex < 0) {
message.error('未找到选中的数据,请检查')
@@ -152,6 +168,7 @@ export default defineComponent({
}
return {
height,
translateSetting,
GetTranslationName,
ResetTranslateSetting,
@@ -159,6 +176,10 @@ export default defineComponent({
ModifyBlock,
block,
translateOptions: [
{
label: 'laitool GPT翻译',
value: TranslateAPIType.LAITOOL
},
{
label: '百度翻译',
value: TranslateAPIType.BAIDU