V 2.2.9 自动匹配,手动排序
This commit is contained in:
@@ -43,7 +43,7 @@ export default defineComponent({
|
||||
javascript,
|
||||
hljs,
|
||||
darkTheme,
|
||||
themeData,
|
||||
themeData
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
@@ -167,7 +167,7 @@ export default defineComponent({
|
||||
* 另存图片的方法
|
||||
*/
|
||||
async function SaveImage() {
|
||||
debugger
|
||||
|
||||
if (isEmpty(save_setting.value.save_folder)) {
|
||||
message.error("请选择手动保存的文件夹")
|
||||
return
|
||||
|
||||
@@ -265,7 +265,7 @@ export default defineComponent({
|
||||
// 初始化加载项目下面的分镜好的文案
|
||||
// 并判断是不是有洗稿后的文件。一并加载
|
||||
await window.api.GetProjectWord((value) => {
|
||||
debugger
|
||||
|
||||
data.value = value.data
|
||||
})
|
||||
|
||||
@@ -358,7 +358,7 @@ export default defineComponent({
|
||||
let itemIndex = row.subValue.findIndex((item) => item.id == itemId)
|
||||
let thisIndex = data.value.findIndex((item) => item.id == row.id)
|
||||
if (itemIndex < 0 && isM) {
|
||||
debugger
|
||||
|
||||
message.error('数据错误')
|
||||
return
|
||||
} else {
|
||||
|
||||
@@ -175,7 +175,7 @@ export default defineComponent({
|
||||
*/
|
||||
async function GetVideoFile() {
|
||||
await window.api.SelectFile(['mp4'], (value) => {
|
||||
debugger
|
||||
|
||||
if (value.code == 0) {
|
||||
message.error(value.message)
|
||||
return
|
||||
@@ -193,7 +193,7 @@ export default defineComponent({
|
||||
message.error('选择分镜的视频地址')
|
||||
return
|
||||
}
|
||||
debugger
|
||||
|
||||
if (
|
||||
toRaw(frameValue.value)
|
||||
.video_path.split('.')
|
||||
|
||||
@@ -244,14 +244,14 @@ export default defineComponent({
|
||||
|
||||
// 获取初始化数据(队列任务-这边不能添加)
|
||||
await window.api.GetGenerateTaskList((value) => {
|
||||
debugger
|
||||
|
||||
console.log(value)
|
||||
data.value = value.data.task_list
|
||||
})
|
||||
|
||||
// 监听状态刷新事件
|
||||
window.api.setEventListen([DEFINE_STRING.VIDEO_GENERATE_STATUS_REFRESH], (value) => {
|
||||
debugger
|
||||
|
||||
console.log(value)
|
||||
let index = data.value.findIndex((item) => item.id == value.id)
|
||||
if (index < 0) {
|
||||
@@ -272,7 +272,7 @@ export default defineComponent({
|
||||
async function AutoConditionCheck(e) {
|
||||
e.preventDefault()
|
||||
configRef.value?.validate(async (errors) => {
|
||||
debugger
|
||||
|
||||
if (errors) {
|
||||
message.error('请检查必填字段')
|
||||
return
|
||||
@@ -301,7 +301,7 @@ export default defineComponent({
|
||||
async function ActionTask(e) {
|
||||
e.preventDefault()
|
||||
configRef.value?.validate(async (errors) => {
|
||||
debugger
|
||||
|
||||
console.log(selectRowKeysRef.value)
|
||||
if (selectRowKeysRef.value.length <= 0) {
|
||||
message.error('请选择要操作的任务')
|
||||
|
||||
@@ -84,7 +84,7 @@ export default defineComponent({
|
||||
*/
|
||||
async function DeleteBadPrompt() {
|
||||
await window.api.DeleteBadPrompt((value) => {
|
||||
debugger
|
||||
|
||||
console.log(value)
|
||||
if (value.code == 0) {
|
||||
message.error(value.message)
|
||||
|
||||
@@ -128,7 +128,7 @@ export default defineComponent({
|
||||
{
|
||||
trigger: 'hover',
|
||||
disabled: (() => {
|
||||
debugger
|
||||
|
||||
if (row.status == 'error') {
|
||||
return false
|
||||
} else {
|
||||
@@ -246,7 +246,7 @@ export default defineComponent({
|
||||
)
|
||||
}
|
||||
await window.api.GetConfigJson(JSON.stringify(['image_style', []]), async (value) => {
|
||||
debugger
|
||||
|
||||
if (value.code == 0) {
|
||||
message.error(value.message)
|
||||
return
|
||||
@@ -266,7 +266,7 @@ export default defineComponent({
|
||||
|
||||
// 修改一个
|
||||
window.api.setEventListen([DEFINE_STRING.IMAGE_TASK_STATUS_REFRESH], (value) => {
|
||||
debugger
|
||||
|
||||
console.log(value)
|
||||
// 修改当前状态
|
||||
let index = task_list_data.value.findIndex((item) => item.out_folder == value.out_folder)
|
||||
@@ -295,7 +295,7 @@ export default defineComponent({
|
||||
}
|
||||
formValue.value.image_style_list = tmp_arr
|
||||
await window.api.AddImageTask(toRaw(formValue.value), (value) => {
|
||||
debugger
|
||||
|
||||
if (value.code == 0) {
|
||||
message.error(value.message)
|
||||
return
|
||||
@@ -364,7 +364,7 @@ export default defineComponent({
|
||||
* 生成全部
|
||||
*/
|
||||
async function GenerateAllImage() {
|
||||
debugger
|
||||
|
||||
// 生成 对应的json 文件
|
||||
await window.api.AddWebuiJson(async (value) => {
|
||||
console.log(value)
|
||||
@@ -407,7 +407,7 @@ export default defineComponent({
|
||||
maskClosable: false,
|
||||
onClose: async () => {
|
||||
// 重新加载数据
|
||||
debugger
|
||||
|
||||
console.log(selectStyle.value)
|
||||
let tmp_arr = []
|
||||
for (let i = 0; i < selectStyle.value.length; i++) {
|
||||
@@ -446,7 +446,7 @@ export default defineComponent({
|
||||
async function RemoveImageTask(row) {
|
||||
//`${task_list.out_folder}_${images[0]}`, batch, task_list.out_folder
|
||||
// 停止当前行的生图任务
|
||||
debugger
|
||||
|
||||
console.log(row)
|
||||
await getInitData()
|
||||
// 判断该当前状态
|
||||
|
||||
@@ -578,7 +578,7 @@ export default defineComponent({
|
||||
|
||||
// 监听状态更新事件
|
||||
window.api.setEventListen([DEFINE_STRING.VIDEO_GENERATE_STATUS_REFRESH], (value) => {
|
||||
debugger;
|
||||
|
||||
console.log(value)
|
||||
// 修改当前状态
|
||||
let index = data.value.findIndex(item => item.folder == value.out_folder);
|
||||
|
||||
@@ -26,7 +26,7 @@ export default defineComponent({
|
||||
|
||||
onMounted(() => {
|
||||
window.api.setEventListen([DEFINE_STRING.GET_FRAME_RETUN], (value) => {
|
||||
debugger;
|
||||
|
||||
code.value = code.value + "\n" + value.data;
|
||||
})
|
||||
})
|
||||
|
||||
@@ -77,7 +77,7 @@ export default defineComponent({
|
||||
message.error("请输入分镜内容");
|
||||
return;
|
||||
}
|
||||
debugger;
|
||||
|
||||
// 文案内容
|
||||
let text_value = inputValue.value.split("\n")
|
||||
// 获取当前项目下面地所有草稿
|
||||
|
||||
@@ -0,0 +1,158 @@
|
||||
<template>
|
||||
<div style="margin-top: 20px">
|
||||
<n-dynamic-tags
|
||||
:type="tagType"
|
||||
:color="tagColor"
|
||||
v-model:value="showTags"
|
||||
:max="max"
|
||||
@update:value="TagUpdate"
|
||||
>
|
||||
<template #input="{ submit, deactivate }">
|
||||
<n-select
|
||||
size="small"
|
||||
style="width: 100px"
|
||||
v-model:value="selectedValue"
|
||||
:options="show_options"
|
||||
:placeholder="placeholder"
|
||||
>
|
||||
</n-select>
|
||||
<n-button size="small" type="info" @click="AddDynamicTag(deactivate)"> 添加 </n-button>
|
||||
</template>
|
||||
<template #trigger="{ activate, disabled }">
|
||||
<n-button
|
||||
v-if="showTags.length != max"
|
||||
size="small"
|
||||
type="primary"
|
||||
dashed
|
||||
:disabled="disabled"
|
||||
@click="activate()"
|
||||
>
|
||||
<template #icon>
|
||||
<n-icon>
|
||||
<Add />
|
||||
</n-icon>
|
||||
</template>
|
||||
添加
|
||||
</n-button>
|
||||
<n-button v-if="showTags.length == max" type="info" size="small" @click="SaveMerge"
|
||||
>保存</n-button
|
||||
>
|
||||
</template>
|
||||
</n-dynamic-tags>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { ref, onMounted, defineComponent, onUnmounted, toRaw, watch, toRefs } from 'vue'
|
||||
import { useMessage, NDynamicTags, NButton, NIcon, NSelect, useDialog } from 'naive-ui'
|
||||
import Add from '@vicons/ionicons5/Add'
|
||||
|
||||
export default defineComponent({
|
||||
components: {
|
||||
NDynamicTags,
|
||||
NButton,
|
||||
NIcon,
|
||||
NSelect,
|
||||
Add,
|
||||
NButton
|
||||
},
|
||||
props: ['options', 'tagType', 'tagColor', 'initData', 'placeholder', 'SaveFunction', 'max'],
|
||||
setup(props) {
|
||||
let { options, tagType, tagColor, initData, placeholder, max } = toRefs(props)
|
||||
let dialog = useDialog()
|
||||
let message = useMessage()
|
||||
let selectedValue = ref(null)
|
||||
let tags = ref(initData.value ? initData.value : [])
|
||||
let showTags = ref([])
|
||||
let show_options = ref([])
|
||||
|
||||
onMounted(async () => {
|
||||
|
||||
tags.value.forEach((element) => {
|
||||
showTags.value.push(element.label)
|
||||
})
|
||||
options.value.forEach((element) => {
|
||||
show_options.value.push(element)
|
||||
})
|
||||
})
|
||||
|
||||
/**
|
||||
* 添加选中的数据
|
||||
*/
|
||||
function AddDynamicTag(deactivate) {
|
||||
// 判断该当前是不是有选中数据
|
||||
if (selectedValue.value == null || selectedValue.value == '') {
|
||||
message.error('请选择需要添加的标签')
|
||||
deactivate()
|
||||
return
|
||||
}
|
||||
// 开始添加
|
||||
console.log(selectedValue.value)
|
||||
|
||||
// 找到对应的options的数据
|
||||
let index = options.value.findIndex((item) => item.value == selectedValue.value)
|
||||
if (index == -1) {
|
||||
message.error('传入的数据中没有找到对应的数据')
|
||||
return
|
||||
}
|
||||
tags.value.push(options.value[index])
|
||||
showTags.value.push(options.value[index].label)
|
||||
// 删除指定的数据
|
||||
let show_index = show_options.value.findIndex((item) => item.value == selectedValue.value)
|
||||
if (show_index == -1) {
|
||||
message.error('传入的数据中没有找到对应的数据')
|
||||
return
|
||||
}
|
||||
show_options.value.splice(show_index, 1)
|
||||
|
||||
// 添加完成之后清空选中数据
|
||||
selectedValue.value = null
|
||||
if (tags.value.length == max.value) {
|
||||
deactivate()
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 在删除的时候更新数据
|
||||
* @param value
|
||||
*/
|
||||
function TagUpdate(value) {
|
||||
console.log(value)
|
||||
show_options.value = []
|
||||
tags.value = []
|
||||
// 修改当前的数据,将除了当前的数据都重新添加到show_options中
|
||||
options.value.forEach((item) => {
|
||||
if (!showTags.value.includes(item.label)) {
|
||||
show_options.value.push(item)
|
||||
} else {
|
||||
tags.value.push(item)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存合并提示词的排序顺序
|
||||
*/
|
||||
async function SaveMerge() {
|
||||
// 开始保存
|
||||
await props.SaveFunction(toRaw(tags.value), toRaw(options.value))
|
||||
}
|
||||
|
||||
return {
|
||||
options,
|
||||
tagType,
|
||||
tagColor,
|
||||
initData,
|
||||
selectedValue,
|
||||
AddDynamicTag,
|
||||
tags,
|
||||
showTags,
|
||||
placeholder,
|
||||
show_options,
|
||||
TagUpdate,
|
||||
SaveMerge,
|
||||
max
|
||||
}
|
||||
}
|
||||
})
|
||||
</script>
|
||||
@@ -158,7 +158,7 @@ export default defineComponent({
|
||||
},
|
||||
setup(props) {
|
||||
let message = useMessage();
|
||||
debugger;
|
||||
|
||||
let images = ref(
|
||||
window.ImageInitData.filter((item) => item.id == window.currentImageId)[0]
|
||||
.output_list
|
||||
@@ -232,7 +232,7 @@ export default defineComponent({
|
||||
window.api.setEventListen(
|
||||
[DEFINE_STRING.REGENERATE_IMAGE_RETUN, window.id],
|
||||
(value) => {
|
||||
debugger
|
||||
|
||||
if (value.type != 1) {
|
||||
return;
|
||||
}
|
||||
@@ -267,7 +267,7 @@ export default defineComponent({
|
||||
* 重绘图片
|
||||
*/
|
||||
async function ReGenerateImage(data) {
|
||||
debugger;
|
||||
|
||||
console.log(data);
|
||||
let obj = {
|
||||
id: data.id,
|
||||
@@ -305,7 +305,7 @@ export default defineComponent({
|
||||
* 获取上一组
|
||||
*/
|
||||
function GetLast() {
|
||||
debugger;
|
||||
|
||||
let index = window.ImageInitData.findIndex(
|
||||
(item) => item.id == window.currentImageId
|
||||
);
|
||||
@@ -322,7 +322,7 @@ export default defineComponent({
|
||||
* 获取下一组
|
||||
*/
|
||||
function GetNext() {
|
||||
debugger;
|
||||
|
||||
let index = window.ImageInitData.findIndex(
|
||||
(item) => item.id === window.currentImageId
|
||||
);
|
||||
|
||||
@@ -63,7 +63,7 @@ export default defineComponent({
|
||||
* 删除
|
||||
*/
|
||||
async function handleClose(tag) {
|
||||
debugger;
|
||||
|
||||
// 删除对应的数据
|
||||
tags.value = tags.value.filter(item => item != tag);
|
||||
show_tags.value = show_tags.value.filter(item => item != tag);
|
||||
@@ -94,7 +94,7 @@ export default defineComponent({
|
||||
* 删除所选的tag(全部)
|
||||
*/
|
||||
async function DeleteTags() {
|
||||
debugger
|
||||
|
||||
let d_l = toRaw(show_tags.value);
|
||||
for (let i = 0; i < d_l.length; i++) {
|
||||
const element = d_l[i];
|
||||
|
||||
@@ -79,7 +79,7 @@ export default defineComponent({
|
||||
if (translateMode.value) {
|
||||
// 翻译单个。马上返回
|
||||
await window.api.TranslateReturnNow([tags, 'zh', 'en', true], (value) => {
|
||||
debugger
|
||||
|
||||
console.log(value)
|
||||
if (value.code == 0) {
|
||||
message.error(value.message);
|
||||
@@ -115,7 +115,7 @@ export default defineComponent({
|
||||
* @param {要删除的tag} tag
|
||||
*/
|
||||
async function handleClose(tag) {
|
||||
debugger
|
||||
|
||||
// 删除对应的数据
|
||||
data.value.chinese_prompt = data.value.chinese_prompt.filter(item => item.src != tag.src);
|
||||
ModifyPrompt();
|
||||
|
||||
@@ -176,7 +176,7 @@ export default defineComponent({
|
||||
)
|
||||
setLayoutHeight('layout_height')
|
||||
await window.api.GetImageStyleMenu((value) => {
|
||||
debugger
|
||||
|
||||
if (value.code == 0) {
|
||||
message.error(value.message)
|
||||
return
|
||||
@@ -197,7 +197,7 @@ export default defineComponent({
|
||||
* 菜单选中事件
|
||||
*/
|
||||
async function SelectMenu(key, item) {
|
||||
debugger
|
||||
|
||||
current_menu = key
|
||||
await getStyleImageSubList()
|
||||
}
|
||||
@@ -214,7 +214,7 @@ export default defineComponent({
|
||||
style_image_list.value = tags.value.style_tags
|
||||
} else {
|
||||
await window.api.getStyleImageSubList(current_menu, (value) => {
|
||||
debugger
|
||||
|
||||
console.log(value)
|
||||
if (value.code == 0) {
|
||||
message.error(value.message)
|
||||
@@ -232,7 +232,7 @@ export default defineComponent({
|
||||
}
|
||||
|
||||
async function closeTag(image) {
|
||||
debugger
|
||||
|
||||
let index = selectStyle.value.findIndex((item) => item.id == image.id)
|
||||
if (index != -1) {
|
||||
selectStyle.value.splice(index, 1)
|
||||
@@ -268,7 +268,7 @@ export default defineComponent({
|
||||
handleSelect(key) {
|
||||
showDropdownRef.value = false
|
||||
if (key == 'selectStyle') {
|
||||
debugger
|
||||
|
||||
// 将当前的风格添加到选择的风格中
|
||||
if (current_img.value) {
|
||||
selectStyle.value.push(current_img.value)
|
||||
|
||||
@@ -56,7 +56,7 @@ export default defineComponent({
|
||||
onMounted(async () => {})
|
||||
|
||||
async function closeTag(image) {
|
||||
debugger
|
||||
|
||||
let index = selectStyle.value.findIndex((item) => item.id == image.id)
|
||||
if (index != -1) {
|
||||
selectStyle.value.splice(index, 1)
|
||||
|
||||
@@ -108,13 +108,10 @@ export default defineComponent({
|
||||
style: `width : ${dialogWidth}px; min-height : ${dialogHeight}px`,
|
||||
maskClosable: false,
|
||||
onClose: async () => {
|
||||
debugger
|
||||
// 判断该管理控制密码是不是正确
|
||||
let password = toRaw(key_down_ref.value.data)
|
||||
console.log(password)
|
||||
// 将密码进行md5加密
|
||||
let md5_password = MD5(password + DEFINE_STRING.OPEN_DEV_TOOLS).toString()
|
||||
console.log(md5_password)
|
||||
window.api.OpenDevToolsPassword(md5_password, (value) => {
|
||||
if (value.code == 0) {
|
||||
message.error(value.message)
|
||||
@@ -168,6 +165,19 @@ export default defineComponent({
|
||||
})
|
||||
})
|
||||
|
||||
window.api.setEventListen([DEFINE_STRING.SHOW_GLOABAL_MESSAGE], (value) => {
|
||||
let mess = value.message
|
||||
let type = 'success'
|
||||
let title = '成功'
|
||||
if (value.code == 0) {
|
||||
type = 'error'
|
||||
title = '成功但失败'
|
||||
} else if (value.code == 2) {
|
||||
;(type = 'warning'), (title = '警告')
|
||||
}
|
||||
message[type](mess, title)
|
||||
})
|
||||
|
||||
// 弹窗,获取机器码
|
||||
dialog.create({
|
||||
showIcon: false,
|
||||
@@ -186,7 +196,6 @@ export default defineComponent({
|
||||
return false
|
||||
},
|
||||
onPositiveClick: async () => {
|
||||
debugger
|
||||
await new Promise(async (resolve, reject) => {
|
||||
await window.api.CheckMachineId(toRaw(machineRef.value.machineId), (value) => {
|
||||
if (value.code == 0) {
|
||||
|
||||
@@ -165,7 +165,7 @@ export default defineComponent({
|
||||
item.loading = false
|
||||
item.timedata = new Date().getTime()
|
||||
})
|
||||
debugger
|
||||
|
||||
data.value = value.value
|
||||
})
|
||||
}
|
||||
@@ -436,7 +436,7 @@ export default defineComponent({
|
||||
await window.api.TranslatePrompt(
|
||||
[JSON.stringify([row]), 'en', 'zh', window.id, false],
|
||||
(value) => {
|
||||
debugger
|
||||
|
||||
console.log(value)
|
||||
}
|
||||
)
|
||||
@@ -559,12 +559,12 @@ export default defineComponent({
|
||||
})
|
||||
|
||||
window.api.setEventListen([DEFINE_STRING.TRANSLATE_RETURN_REFRESH, window.id], (value) => {
|
||||
debugger
|
||||
|
||||
if (value.code == 0) {
|
||||
message.error('返回数据错误')
|
||||
return
|
||||
}
|
||||
debugger
|
||||
|
||||
|
||||
// 直接
|
||||
let index = data.value.findIndex((item) => item.id == value.rowId)
|
||||
@@ -620,7 +620,7 @@ export default defineComponent({
|
||||
async function TranslatePrompt(translateData, from, to) {
|
||||
console.log(translateData)
|
||||
await window.api.TranslatePrompt([translateData, from, to, window.id, true], (value) => {
|
||||
debugger
|
||||
|
||||
console.log(value)
|
||||
})
|
||||
}
|
||||
@@ -629,7 +629,7 @@ export default defineComponent({
|
||||
* 翻译中文到提示词
|
||||
*/
|
||||
async function TranslateChineseToPrompt() {
|
||||
debugger
|
||||
|
||||
// 将当前的prompt和Chinese_prompt中的src全部删除(全部重新翻译)
|
||||
let fileterData = []
|
||||
for (let i = 0; i < data.value.length; i++) {
|
||||
@@ -650,7 +650,7 @@ export default defineComponent({
|
||||
let tmp_str = JSON.stringify(fileterData)
|
||||
// 开始调用
|
||||
await window.api.TranslatePrompt([tmp_str, 'zh', 'en', window.id, true], (value) => {
|
||||
debugger
|
||||
|
||||
console.log(value)
|
||||
})
|
||||
}
|
||||
@@ -780,7 +780,7 @@ export default defineComponent({
|
||||
// 翻译立即返回
|
||||
// 翻译单个。马上返回
|
||||
await window.api.TranslateReturnNow([tmp_s, 'en', 'zh', true], (value) => {
|
||||
debugger
|
||||
|
||||
console.log(value)
|
||||
if (value.code == 0) {
|
||||
message.error(value.message)
|
||||
|
||||
@@ -3,7 +3,10 @@
|
||||
<div style="width: 500px; position: relative">
|
||||
<n-form ref="formRef" label-placement="top" :model="characterData" :rules="rules">
|
||||
<n-form-item label="人物名称" path="label">
|
||||
<n-input v-model:value="characterData.label" placeholder="请输入人物名称" />
|
||||
<n-input style="width: 400px;" v-model:value="characterData.label" placeholder="请输入人物名称" />
|
||||
<n-checkbox style="margin-left: 20px" v-model:checked="characterData.isShow"
|
||||
>显示</n-checkbox
|
||||
>
|
||||
<n-image
|
||||
style="position: absolute; left: 520px; top: 0"
|
||||
width="120"
|
||||
@@ -106,7 +109,8 @@ import {
|
||||
NFormItem,
|
||||
NDynamicTags,
|
||||
NInputNumber,
|
||||
NSelect
|
||||
NSelect,
|
||||
NCheckbox
|
||||
} from 'naive-ui'
|
||||
import { v4 as uuidv4 } from 'uuid'
|
||||
import { isEmpty } from 'lodash'
|
||||
@@ -120,7 +124,8 @@ export default defineComponent({
|
||||
NFormItem,
|
||||
NDynamicTags,
|
||||
NInputNumber,
|
||||
NSelect
|
||||
NSelect,
|
||||
NCheckbox
|
||||
},
|
||||
props: ['currentCharacter', 'initFunc', 'currentTags', 'lora_options'],
|
||||
setup(props) {
|
||||
@@ -183,7 +188,7 @@ export default defineComponent({
|
||||
await window.mj.SaveTagPropertyData(
|
||||
[JSON.stringify(characterData.value), 'character_tags'],
|
||||
(value) => {
|
||||
debugger
|
||||
|
||||
console.log(value)
|
||||
if (value.code == 0) {
|
||||
message.error(value.message)
|
||||
@@ -275,7 +280,7 @@ export default defineComponent({
|
||||
}
|
||||
imageLoading.value = true
|
||||
await window.sd.txt2img(JSON.stringify([d]), async (value) => {
|
||||
debugger
|
||||
|
||||
if (value.code == 0) {
|
||||
message.error(value.message)
|
||||
imageLoading.value = false
|
||||
|
||||
@@ -55,7 +55,7 @@ export default defineComponent({
|
||||
// 开始保存
|
||||
prefixData.value['type'] = "prefix_main";
|
||||
await window.mj.SaveTagPropertyData([JSON.stringify(prefixData.value), "prefix_tags"], (value) => {
|
||||
debugger;
|
||||
|
||||
console.log(value);
|
||||
if (value.code == 0) {
|
||||
message.error(value.message);
|
||||
|
||||
@@ -1,18 +1,41 @@
|
||||
<template>
|
||||
<div style="width: 500px;">
|
||||
<n-form label-placement="top" ref="formRef" :rules="rules" :model="sceneData">
|
||||
<n-form-item label="场景名称" path="label">
|
||||
<n-input v-model:value="sceneData.label" placeholder="请输入场景名称" />
|
||||
</n-form-item>
|
||||
<n-form-item label="场景提示词描述(中文)">
|
||||
<n-input type="textarea" :rows="3" v-model:value="sceneData.chinese_prompt" placeholder="请输入场景提示词描述" />
|
||||
<n-button type="info" size="small" style="margin-left: 20px;" @click="TranslatePrompt"
|
||||
:loading="loading">翻译提示词</n-button>
|
||||
</n-form-item>
|
||||
<n-form-item label="场景提示词描述(英文)" path="prompt">
|
||||
<n-input type="textarea" :rows="3" v-model:value="sceneData.prompt" placeholder="请输入场景提示词描述" />
|
||||
</n-form-item>
|
||||
<!-- <n-form-item label="MJ:风格垫图链接(sref)">
|
||||
<div style="width: 500px">
|
||||
<n-form label-placement="top" ref="formRef" :rules="rules" :model="sceneData">
|
||||
<n-form-item label="场景名称" path="label">
|
||||
<n-input
|
||||
style="width: 400px"
|
||||
v-model:value="sceneData.label"
|
||||
placeholder="请输入场景名称"
|
||||
/>
|
||||
<n-checkbox style="margin-left: 20px" v-model:checked="sceneData.isShow"
|
||||
>显示</n-checkbox
|
||||
>
|
||||
</n-form-item>
|
||||
<n-form-item label="场景提示词描述(中文)">
|
||||
<n-input
|
||||
type="textarea"
|
||||
:rows="3"
|
||||
v-model:value="sceneData.chinese_prompt"
|
||||
placeholder="请输入场景提示词描述"
|
||||
/>
|
||||
<n-button
|
||||
type="info"
|
||||
size="small"
|
||||
style="margin-left: 20px"
|
||||
@click="TranslatePrompt"
|
||||
:loading="loading"
|
||||
>翻译提示词</n-button
|
||||
>
|
||||
</n-form-item>
|
||||
<n-form-item label="场景提示词描述(英文)" path="prompt">
|
||||
<n-input
|
||||
type="textarea"
|
||||
:rows="3"
|
||||
v-model:value="sceneData.prompt"
|
||||
placeholder="请输入场景提示词描述"
|
||||
/>
|
||||
</n-form-item>
|
||||
<!-- <n-form-item label="MJ:风格垫图链接(sref)">
|
||||
<n-input v-model:value="sceneData.image_url" placeholder="请输入风格垫图链接" style="margin-right: 20px;" />
|
||||
<n-image v-if="sceneData.image_url" :src="sceneData.image_url" style="width: 80px; height: 80px" />
|
||||
</n-form-item>
|
||||
@@ -24,118 +47,145 @@
|
||||
<n-input v-model:value="sceneData.lora" placeholder="请输入风格Lora" />
|
||||
<n-button color="#e18a3b" style="margin-left: 20px;">选择</n-button>
|
||||
</n-form-item> -->
|
||||
</n-form>
|
||||
</n-form>
|
||||
|
||||
<div style="text-align: right;">
|
||||
<n-button type="success" @click="SaveSceneTag">保存</n-button>
|
||||
</div>
|
||||
<div style="text-align: right">
|
||||
<n-button type="success" @click="SaveSceneTag">保存</n-button>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { ref, h, onMounted, defineComponent, toRaw, watch } from "vue"
|
||||
import { NImage, useMessage, NButton, useDialog, NInput, NForm, NFormItem, NDynamicTags, NInputNumber } from "naive-ui";
|
||||
import { v4 as uuidv4 } from "uuid";
|
||||
import { ref, h, onMounted, defineComponent, toRaw, watch } from 'vue'
|
||||
import {
|
||||
NImage,
|
||||
useMessage,
|
||||
NButton,
|
||||
useDialog,
|
||||
NInput,
|
||||
NForm,
|
||||
NFormItem,
|
||||
NDynamicTags,
|
||||
NInputNumber,
|
||||
NCheckbox
|
||||
} from 'naive-ui'
|
||||
import { v4 as uuidv4 } from 'uuid'
|
||||
|
||||
export default defineComponent({
|
||||
components: {
|
||||
NImage, NButton, NInput, NForm, NFormItem, NDynamicTags, NInputNumber
|
||||
},
|
||||
props: ["currentScene", "initFunc"],
|
||||
setup(props) {
|
||||
let message = useMessage();
|
||||
let sceneData = ref(props.currentScene);
|
||||
let loading = ref(false);
|
||||
let formRef = ref(null)
|
||||
components: {
|
||||
NImage,
|
||||
NButton,
|
||||
NInput,
|
||||
NForm,
|
||||
NFormItem,
|
||||
NDynamicTags,
|
||||
NInputNumber,
|
||||
NCheckbox
|
||||
},
|
||||
props: ['currentScene', 'initFunc'],
|
||||
setup(props) {
|
||||
let message = useMessage()
|
||||
let sceneData = ref(props.currentScene)
|
||||
let loading = ref(false)
|
||||
let formRef = ref(null)
|
||||
|
||||
// 监听数据变化
|
||||
watch(() => props.currentScene, (value) => {
|
||||
sceneData.value = value;
|
||||
}, { deep: true })
|
||||
// 监听数据变化
|
||||
watch(
|
||||
() => props.currentScene,
|
||||
(value) => {
|
||||
sceneData.value = value
|
||||
},
|
||||
{ deep: true }
|
||||
)
|
||||
|
||||
onMounted(async () => {
|
||||
onMounted(async () => {})
|
||||
|
||||
})
|
||||
|
||||
// 保存操作
|
||||
async function SaveSceneTag(e) {
|
||||
e.preventDefault();
|
||||
formRef.value?.validate(async (errors) => {
|
||||
if (errors) {
|
||||
message.error("请检查必填字段");
|
||||
return
|
||||
}
|
||||
// 直接保存
|
||||
// 开始保存
|
||||
sceneData.value['type'] = "scene_main";
|
||||
await window.mj.SaveTagPropertyData([JSON.stringify(sceneData.value), "scene_tags"], (value) => {
|
||||
debugger;
|
||||
console.log(value);
|
||||
if (value.code == 0) {
|
||||
message.error(value.message);
|
||||
return;
|
||||
}
|
||||
message.success(value.message);
|
||||
//保存成功在initFunc
|
||||
props.initFunc();
|
||||
// 清楚数据
|
||||
sceneData.value = {
|
||||
label: null,
|
||||
key: null,
|
||||
type: "scene_main",
|
||||
prompt: null,
|
||||
// image_url: null,
|
||||
// cref_cw: 20,
|
||||
// lora: null,
|
||||
};
|
||||
})
|
||||
});
|
||||
// 保存操作
|
||||
async function SaveSceneTag(e) {
|
||||
e.preventDefault()
|
||||
formRef.value?.validate(async (errors) => {
|
||||
if (errors) {
|
||||
message.error('请检查必填字段')
|
||||
return
|
||||
}
|
||||
|
||||
// 翻译提示词
|
||||
async function TranslatePrompt() {
|
||||
loading.value = true;
|
||||
if (sceneData.value.chinese_prompt == "" || sceneData.value.chinese_prompt == null) {
|
||||
message.error("请输入中文提示词");
|
||||
loading.value = false;
|
||||
return;
|
||||
// 直接保存
|
||||
// 开始保存
|
||||
sceneData.value['type'] = 'scene_main'
|
||||
await window.mj.SaveTagPropertyData(
|
||||
[JSON.stringify(sceneData.value), 'scene_tags'],
|
||||
(value) => {
|
||||
|
||||
console.log(value)
|
||||
if (value.code == 0) {
|
||||
message.error(value.message)
|
||||
return
|
||||
}
|
||||
await window.api.TranslateReturnNow([sceneData.value.chinese_prompt, 'zh', 'en', false], (value) => {
|
||||
if (value.code == 0) {
|
||||
message.error(value.message);
|
||||
return;
|
||||
}
|
||||
//
|
||||
console.log(value.data);
|
||||
sceneData.value.prompt = value.data[0].src;
|
||||
})
|
||||
loading.value = false;
|
||||
}
|
||||
|
||||
let ruleObj = (errorMessage) => {
|
||||
return [{
|
||||
required: true,
|
||||
validator(rule, value) {
|
||||
if (value == null || value == "")
|
||||
return new Error(errorMessage);
|
||||
return true;
|
||||
},
|
||||
trigger: ["input", "blur", "change"]
|
||||
}]
|
||||
}
|
||||
let rules = {
|
||||
label: ruleObj("必填人物名称"),
|
||||
prompt: ruleObj("必填英文提示词")
|
||||
};
|
||||
|
||||
return {
|
||||
sceneData,
|
||||
SaveSceneTag,
|
||||
loading,
|
||||
TranslatePrompt,
|
||||
rules,
|
||||
formRef
|
||||
}
|
||||
message.success(value.message)
|
||||
//保存成功在initFunc
|
||||
props.initFunc()
|
||||
// 清楚数据
|
||||
sceneData.value = {
|
||||
label: null,
|
||||
key: null,
|
||||
type: 'scene_main',
|
||||
prompt: null
|
||||
// image_url: null,
|
||||
// cref_cw: 20,
|
||||
// lora: null,
|
||||
}
|
||||
}
|
||||
)
|
||||
})
|
||||
}
|
||||
|
||||
// 翻译提示词
|
||||
async function TranslatePrompt() {
|
||||
loading.value = true
|
||||
if (sceneData.value.chinese_prompt == '' || sceneData.value.chinese_prompt == null) {
|
||||
message.error('请输入中文提示词')
|
||||
loading.value = false
|
||||
return
|
||||
}
|
||||
await window.api.TranslateReturnNow(
|
||||
[sceneData.value.chinese_prompt, 'zh', 'en', false],
|
||||
(value) => {
|
||||
if (value.code == 0) {
|
||||
message.error(value.message)
|
||||
return
|
||||
}
|
||||
//
|
||||
console.log(value.data)
|
||||
sceneData.value.prompt = value.data[0].src
|
||||
}
|
||||
)
|
||||
loading.value = false
|
||||
}
|
||||
|
||||
let ruleObj = (errorMessage) => {
|
||||
return [
|
||||
{
|
||||
required: true,
|
||||
validator(rule, value) {
|
||||
if (value == null || value == '') return new Error(errorMessage)
|
||||
return true
|
||||
},
|
||||
trigger: ['input', 'blur', 'change']
|
||||
}
|
||||
]
|
||||
}
|
||||
let rules = {
|
||||
label: ruleObj('必填人物名称'),
|
||||
prompt: ruleObj('必填英文提示词')
|
||||
}
|
||||
|
||||
return {
|
||||
sceneData,
|
||||
SaveSceneTag,
|
||||
loading,
|
||||
TranslatePrompt,
|
||||
rules,
|
||||
formRef
|
||||
}
|
||||
}
|
||||
})
|
||||
</script>
|
||||
</script>
|
||||
|
||||
@@ -154,7 +154,7 @@ export default defineComponent({
|
||||
await window.mj.SaveTagPropertyData(
|
||||
[JSON.stringify(styleData.value), 'style_tags'],
|
||||
(value) => {
|
||||
debugger
|
||||
|
||||
console.log(value)
|
||||
if (value.code == 0) {
|
||||
message.error(value.message)
|
||||
@@ -246,7 +246,7 @@ export default defineComponent({
|
||||
}
|
||||
imageLoading.value = true
|
||||
await window.sd.txt2img(JSON.stringify([d]), async (value) => {
|
||||
debugger
|
||||
|
||||
if (value.code == 0) {
|
||||
message.error(value.message)
|
||||
imageLoading.value = false
|
||||
|
||||
@@ -55,7 +55,7 @@ export default defineComponent({
|
||||
// 开始保存
|
||||
suffixData.value['type'] = "suffix_main";
|
||||
await window.mj.SaveTagPropertyData([JSON.stringify(suffixData.value), "suffix_tags"], (value) => {
|
||||
debugger;
|
||||
|
||||
console.log(value);
|
||||
if (value.code == 0) {
|
||||
message.error(value.message);
|
||||
|
||||
@@ -90,7 +90,7 @@ export default defineComponent({
|
||||
loading.value = true;
|
||||
|
||||
await window.api.AutoAnalyzeCharacter(toRaw(word.value), (value) => {
|
||||
debugger
|
||||
|
||||
loading.value = false;
|
||||
if (value.code == 0) {
|
||||
message.error(value.message);
|
||||
|
||||
@@ -275,7 +275,7 @@ export default defineComponent({
|
||||
|
||||
// 设置标签集的自动高度,传一个外面的高度进来
|
||||
function SetAutoHeight() {
|
||||
debugger
|
||||
|
||||
let div = document.getElementById('tree_define_content')
|
||||
div.style.height = props.height - 180 + 'px'
|
||||
}
|
||||
@@ -318,7 +318,8 @@ export default defineComponent({
|
||||
show_image: window.config.space_image,
|
||||
cref_cw: 50,
|
||||
lora: '无',
|
||||
lora_weight: 1
|
||||
lora_weight: 1,
|
||||
isShow: false
|
||||
}
|
||||
currentTags.value = []
|
||||
currentType.value = 'character_main'
|
||||
@@ -335,7 +336,8 @@ export default defineComponent({
|
||||
label: null,
|
||||
key: uuidv4(),
|
||||
type: 'scene_main',
|
||||
prompt: null
|
||||
prompt: null,
|
||||
isShow: false
|
||||
}
|
||||
currentType.value = 'scene_main'
|
||||
}
|
||||
@@ -395,7 +397,7 @@ export default defineComponent({
|
||||
function nodeProps({ option }) {
|
||||
return {
|
||||
onClick() {
|
||||
debugger
|
||||
|
||||
// 执行切换组件和数据
|
||||
if (option.type == 'style') {
|
||||
currentType.value = 'style'
|
||||
@@ -421,13 +423,16 @@ export default defineComponent({
|
||||
} else if (option.type == 'min') {
|
||||
message.error('别名节点不允许操作')
|
||||
} else {
|
||||
debugger
|
||||
|
||||
console.log(option)
|
||||
currentType.value = option.type
|
||||
// 修改当前属性
|
||||
if (currentType.value.startsWith('character')) {
|
||||
// 修改tags的值
|
||||
currentCharacter.value = option
|
||||
if(!currentCharacter.value.hasOwnProperty("isShow")){
|
||||
currentCharacter.value.isShow = false
|
||||
}
|
||||
currentTags.value = option.children.map((item) => {
|
||||
return item.label
|
||||
})
|
||||
|
||||
@@ -9,15 +9,42 @@
|
||||
v-model:value="title_character_select_model"
|
||||
placeholder="选择模式"
|
||||
></n-select>
|
||||
<n-button size="tiny" color="#e18a3b" style="margin-left: 5px" @click="RefreshTagData">
|
||||
<n-icon>
|
||||
<reload />
|
||||
</n-icon>
|
||||
</n-button>
|
||||
<n-popover trigger="hover">
|
||||
<template #trigger>
|
||||
<n-button
|
||||
text
|
||||
color="#e18a3b"
|
||||
style="margin-left: 5px; font-size: 24px"
|
||||
@click="RefreshTagData"
|
||||
>
|
||||
<n-icon>
|
||||
<ReloadCircle />
|
||||
</n-icon>
|
||||
</n-button>
|
||||
</template>
|
||||
<span>刷新任务标签数据</span>
|
||||
</n-popover>
|
||||
|
||||
<n-popover trigger="hover">
|
||||
<template #trigger>
|
||||
<n-button
|
||||
size="tiny"
|
||||
color="#c0d695"
|
||||
style="margin-left: 5px; font-size: 24px"
|
||||
text
|
||||
@click="MatchUser"
|
||||
>
|
||||
<n-icon>
|
||||
<ExtensionPuzzle />
|
||||
</n-icon>
|
||||
</n-button>
|
||||
</template>
|
||||
<span>自动匹配人物</span>
|
||||
</n-popover>
|
||||
</div>
|
||||
<div v-else-if="type == 'data'">
|
||||
<div v-if="title_character_select_model == 'tag'">
|
||||
<div style="min-height: 65px; overflow-y: auto; width: 190px">
|
||||
<div style="min-height: 65px; overflow-y: auto; width: 200px">
|
||||
<span>人物:</span>
|
||||
<n-tag
|
||||
v-for="(character, index) in character_tags"
|
||||
@@ -79,10 +106,21 @@
|
||||
|
||||
<script>
|
||||
import { ref, h, onMounted, defineComponent, toRaw, watch } from 'vue'
|
||||
import { NImage, useMessage, NButton, useDialog, NInput, NTag, NSelect, NIcon } from 'naive-ui'
|
||||
import {
|
||||
NImage,
|
||||
useMessage,
|
||||
NButton,
|
||||
useDialog,
|
||||
NInput,
|
||||
NTag,
|
||||
NSelect,
|
||||
NIcon,
|
||||
NPopover
|
||||
} from 'naive-ui'
|
||||
import { DEFINE_STRING } from '../../../../../define/define_string'
|
||||
import { cloneDeep, debounce, get, once } from 'lodash'
|
||||
import { Refresh, Reload } from '@vicons/ionicons5'
|
||||
import { Refresh, ReloadCircle, ExtensionPuzzle } from '@vicons/ionicons5'
|
||||
import ProgressDialog from '../../Components/ProgressDialog.vue'
|
||||
|
||||
export default defineComponent({
|
||||
components: {
|
||||
@@ -92,7 +130,9 @@ export default defineComponent({
|
||||
NTag,
|
||||
NSelect,
|
||||
NIcon,
|
||||
Reload
|
||||
ReloadCircle,
|
||||
ExtensionPuzzle,
|
||||
NPopover
|
||||
},
|
||||
props: ['type', 'row', 'characterSelectModel', 'tags', 'func'],
|
||||
setup(props) {
|
||||
@@ -103,6 +143,7 @@ export default defineComponent({
|
||||
let character_tags = ref([])
|
||||
let scene_tags = ref([])
|
||||
let tags = ref(props.tags)
|
||||
let dialog = useDialog()
|
||||
|
||||
let characterData = ref([])
|
||||
|
||||
@@ -114,7 +155,6 @@ export default defineComponent({
|
||||
watch(
|
||||
() => props.characterSelectModel,
|
||||
(value) => {
|
||||
debugger
|
||||
// InitData(value);
|
||||
if (value.value == 'drop') {
|
||||
select_character_tags.value = []
|
||||
@@ -149,7 +189,7 @@ export default defineComponent({
|
||||
)
|
||||
|
||||
onMounted(async () => {
|
||||
// debugger
|
||||
//
|
||||
// await InitCharacterAndSceneData()
|
||||
await window.mj.GetTagSelectModel((value) => {
|
||||
characterSelectMoedlOptions.value = value.data
|
||||
@@ -220,14 +260,24 @@ export default defineComponent({
|
||||
* @param {*} tags
|
||||
*/
|
||||
async function InitCharacterAndSceneData() {
|
||||
debugger
|
||||
// if (!tags) return
|
||||
character_tags.value = cloneDeep(tags.value.character_tags)
|
||||
character_tags.value.forEach((item) => {
|
||||
item.children = null
|
||||
})
|
||||
for (let i = 0; i < character_tags.value.length; i++) {
|
||||
let item = character_tags.value[i]
|
||||
character_tags.value[i].children = null
|
||||
if (!item.hasOwnProperty('isShow') || item.isShow == false) {
|
||||
character_tags.value.splice(i, 1)
|
||||
i--
|
||||
}
|
||||
}
|
||||
scene_tags.value = cloneDeep(tags.value.scene_tags)
|
||||
|
||||
for (let i = 0; i < scene_tags.value.length; i++) {
|
||||
let item = scene_tags.value[i]
|
||||
if (!item.hasOwnProperty('isShow') || item.isShow == false) {
|
||||
scene_tags.value.splice(i, 1)
|
||||
i--
|
||||
}
|
||||
}
|
||||
select_character_tags.value = []
|
||||
select_scene_tags.value = []
|
||||
// 初始化数据(选择为true)
|
||||
@@ -304,6 +354,47 @@ export default defineComponent({
|
||||
}
|
||||
}
|
||||
|
||||
let dp = null
|
||||
/**
|
||||
* 开始人物匹配
|
||||
*/
|
||||
async function MatchUser() {
|
||||
// 先监听对应的方法
|
||||
window.api.setEventListen([DEFINE_STRING.MJ.MACTH_USER_RETURN], (value) => {
|
||||
// 返回的数据都是有效的
|
||||
// 获取指定
|
||||
let temp_data = props.func.getData(null)
|
||||
// 调用方法,然后,传递一个回调函数
|
||||
props.func.modifyData(() => {
|
||||
|
||||
console.log(temp_data)
|
||||
// 修改当前指定ID的data行
|
||||
let index = temp_data.findIndex((x) => x.id == value.id)
|
||||
if (index >= 0) {
|
||||
temp_data[index].character_tags = value.match_character
|
||||
}
|
||||
return temp_data
|
||||
})
|
||||
})
|
||||
// 拿到现在所有的数据
|
||||
let da = props.func.getData(null)
|
||||
// 开始调用方法
|
||||
await window.mj.AutoMatchUser(JSON.stringify(da), async (value) => {
|
||||
setTimeout(() => {
|
||||
if (dp) {
|
||||
dp.destroy()
|
||||
}
|
||||
}, 1000)
|
||||
await RefreshTagData()
|
||||
if (value.code == 0) {
|
||||
message.error(value.message)
|
||||
window.api.showGlobalMessageDialog(value)
|
||||
return
|
||||
}
|
||||
window.api.showGlobalMessageDialog(value)
|
||||
})
|
||||
}
|
||||
|
||||
return {
|
||||
characterData,
|
||||
row,
|
||||
@@ -321,7 +412,8 @@ export default defineComponent({
|
||||
title_character_select_model,
|
||||
RefreshTagData,
|
||||
UpdateCharacterSelect,
|
||||
UpdateSceneSelect
|
||||
UpdateSceneSelect,
|
||||
MatchUser
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
@@ -142,7 +142,7 @@ export default defineComponent({
|
||||
message.error('当前翻译的数据里面没有中文')
|
||||
}
|
||||
} else if (key == 'chinese') {
|
||||
debugger
|
||||
|
||||
let t = [[toRaw(row.value)], 'en', 'zh', false, false]
|
||||
await window.mj.TranslateReturnNowTask(JSON.stringify(t), (value) => {
|
||||
if (value.code == 0) {
|
||||
|
||||
@@ -66,7 +66,7 @@ export default defineComponent({
|
||||
});
|
||||
|
||||
async function onUpdateChecked(v) {
|
||||
debugger;
|
||||
|
||||
row.adetailer = v;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,10 +1,23 @@
|
||||
<template>
|
||||
<div v-if="type == 'title'">
|
||||
<div v-if="type == 'title'" style="display: flex">
|
||||
<span style="margin-right: 5px">提示词命令</span>
|
||||
|
||||
<n-popover trigger="hover">
|
||||
<template #trigger>
|
||||
<n-button color="#7c461e" @click="SetMergeModel" text style="font-size: 24px">
|
||||
<n-icon>
|
||||
<Construct />
|
||||
</n-icon>
|
||||
</n-button>
|
||||
</template>
|
||||
<span>设置合并排序模式</span>
|
||||
</n-popover>
|
||||
<n-dropdown trigger="hover" :options="MergePromptOptions" @select="MergePromptSelect">
|
||||
<n-button size="tiny" @click="MergePrompt" color="#7c461e">合并命令</n-button>
|
||||
<n-button size="tiny" style="margin-left: 5px" @click="MergePrompt(null)" color="#e18a3b"
|
||||
>合并命令</n-button
|
||||
>
|
||||
</n-dropdown>
|
||||
<n-button color="#e18a3b" size="tiny" style="margin-left: 5px" @click="MJBadPromptCheck"
|
||||
<n-button color="#c0d695" size="tiny" style="margin-left: 5px" @click="MJBadPromptCheck"
|
||||
>敏感词检查</n-button
|
||||
>
|
||||
</div>
|
||||
@@ -24,6 +37,10 @@
|
||||
<span>粘贴MJ里面的图片链接。自动下载到对应的行。并分割。</span>
|
||||
</n-popover>
|
||||
|
||||
<n-button size="tiny" color="#ee7959" style="margin-right: 5px" @click="SingleMergePrompt"
|
||||
>单句合并</n-button
|
||||
>
|
||||
|
||||
<n-input
|
||||
:status="input_status"
|
||||
size="tiny"
|
||||
@@ -37,16 +54,22 @@
|
||||
|
||||
<script>
|
||||
import { ref, h, onMounted, defineComponent, toRaw, watch } from 'vue'
|
||||
import { NButton, NInput, NPopover, useMessage, useDialog, NDropdown } from 'naive-ui'
|
||||
import { NButton, NInput, NPopover, useMessage, useDialog, NDropdown, NIcon } from 'naive-ui'
|
||||
import { DEFINE_STRING } from '../../../../../define/define_string'
|
||||
import InputDialogContent from './InputDialogContent.vue'
|
||||
import { Construct } from '@vicons/ionicons5'
|
||||
import DynamicTagsSelect from '../../Components/DynamicTagsSelect.vue'
|
||||
import { usePromptStore } from '../../../../../stores/prompt'
|
||||
|
||||
export default defineComponent({
|
||||
components: {
|
||||
NButton,
|
||||
NInput,
|
||||
NPopover,
|
||||
NDropdown
|
||||
NDropdown,
|
||||
NIcon,
|
||||
Construct,
|
||||
NPopover
|
||||
},
|
||||
props: ['type', 'row', 'index', 'func'],
|
||||
setup(props) {
|
||||
@@ -56,10 +79,7 @@ export default defineComponent({
|
||||
let row = ref(props.row)
|
||||
let input_status = ref('default')
|
||||
let image_url_ref = ref(null)
|
||||
|
||||
// let input_image_
|
||||
|
||||
// 重新计算命令
|
||||
let promptStore = usePromptStore()
|
||||
|
||||
// 监听数据变化
|
||||
watch(
|
||||
@@ -140,10 +160,15 @@ export default defineComponent({
|
||||
}
|
||||
|
||||
/**
|
||||
* 合并提示词
|
||||
* 合并命令
|
||||
* @param {*} key
|
||||
*/
|
||||
async function MergePrompt() {
|
||||
props.func.mergePrompt(null)
|
||||
async function MergePrompt(key) {
|
||||
if (row.value.id) {
|
||||
props.func.mergePrompt(row.value.id, key)
|
||||
} else {
|
||||
props.func.mergePrompt(null, key)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -167,7 +192,6 @@ export default defineComponent({
|
||||
style: `width : ${dialogWidth}px; min-height : ${dialogHeight}px`,
|
||||
maskClosable: false,
|
||||
onClose: async () => {
|
||||
debugger
|
||||
let row_image_url = image_url_ref.value.data
|
||||
|
||||
// 下载指定的图片地址并且分割
|
||||
@@ -196,7 +220,62 @@ export default defineComponent({
|
||||
* @param key
|
||||
*/
|
||||
async function MergePromptSelect(key) {
|
||||
props.func.mergePrompt(key)
|
||||
MergePrompt(key)
|
||||
}
|
||||
|
||||
async function SaveFunction(value, options) {
|
||||
// 开始保存
|
||||
|
||||
// 判断当前的数据是不是options中的数据数量是不是相同
|
||||
if (value.length != options.length) {
|
||||
message.error('要保存的数据量和下拉选择的的数据量不一致')
|
||||
return
|
||||
}
|
||||
promptStore.InitPromptSort(value)
|
||||
|
||||
// 开始保存
|
||||
await window.pmpt.SavePromptSort(value, (value) => {
|
||||
if (value.code == 0) {
|
||||
message.error(value.message)
|
||||
reutrn
|
||||
}
|
||||
message.success(value.message)
|
||||
// 保存成功,修改store
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置合并的模式
|
||||
*/
|
||||
async function SetMergeModel() {
|
||||
// 获取当前的排序数据
|
||||
await window.pmpt.GetPromptSortOptions((value) => {
|
||||
let options = value.data
|
||||
|
||||
dialog.create({
|
||||
name: 'setMergeModel',
|
||||
title: '设置合并排序模式',
|
||||
content: () =>
|
||||
h(DynamicTagsSelect, {
|
||||
options: options,
|
||||
tagType: 'success',
|
||||
placeholder: '选择当前的prompt排序方式',
|
||||
SaveFunction: SaveFunction,
|
||||
initData: promptStore.GetPromptSort,
|
||||
max: 4
|
||||
}),
|
||||
style: `width : 500px; `,
|
||||
maskClosable: false,
|
||||
onPositiveClick: async () => {}
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 单句合并
|
||||
*/
|
||||
async function SingleMergePrompt() {
|
||||
MergePrompt(null)
|
||||
}
|
||||
|
||||
return {
|
||||
@@ -213,7 +292,9 @@ export default defineComponent({
|
||||
MergePromptOptions: [
|
||||
{ label: 'SD模式合并', key: 'sd_merge' },
|
||||
{ label: 'MJ模式合并', key: 'mj_merge' }
|
||||
]
|
||||
],
|
||||
SetMergeModel,
|
||||
SingleMergePrompt
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
@@ -104,6 +104,8 @@ import {
|
||||
NPopover,
|
||||
NTag
|
||||
} from 'naive-ui'
|
||||
import { usePromptStore } from '../../../../../stores/prompt'
|
||||
import { useImageStore } from '../../../../../stores/image'
|
||||
|
||||
export default defineComponent({
|
||||
components: {
|
||||
@@ -117,6 +119,8 @@ export default defineComponent({
|
||||
},
|
||||
props: ['initData', 'type', 'image_generate_category', 'func'],
|
||||
setup(props) {
|
||||
let imageStore = useImageStore()
|
||||
let promptStore = usePromptStore()
|
||||
let message = useMessage()
|
||||
let data = ref(props.initData)
|
||||
let type = ref(props.type)
|
||||
@@ -167,7 +171,7 @@ export default defineComponent({
|
||||
|
||||
onMounted(async () => {
|
||||
await window.api.InitSDConfig((value) => {
|
||||
debugger
|
||||
|
||||
if (value.code == 0) {
|
||||
message.error(value.message)
|
||||
return
|
||||
@@ -210,23 +214,24 @@ export default defineComponent({
|
||||
e.dataTransfer.effectAllowed = 'move'
|
||||
console.log('move', e.target)
|
||||
dragTarget = e.target
|
||||
imageStore.SetDragTarget(e.target)
|
||||
}
|
||||
|
||||
// 图片拖拽结束事件
|
||||
async function imageDragDrop(e) {
|
||||
debugger
|
||||
|
||||
console.log('end', e.target, dragTarget)
|
||||
// 判断原始数据是不是为空
|
||||
if (dragTarget == null) {
|
||||
message.error('只能拖拽到当前行的图片上')
|
||||
return
|
||||
}
|
||||
// if (dragTarget == null) {
|
||||
// message.error('只能拖拽到当前行的图片上')
|
||||
// return
|
||||
// }
|
||||
// 判断结束位置是不是主图片
|
||||
if (e.target.getAttribute('mainImage') != '1') {
|
||||
message.error('图片只能拖拽到主图片上')
|
||||
return
|
||||
}
|
||||
let source_img = dragTarget.src
|
||||
let source_img = imageStore.GetDragTarget.src
|
||||
.split('?')[0]
|
||||
.replace(/^file:\/\/\//, '')
|
||||
.replace(/^\//, '')
|
||||
@@ -253,6 +258,7 @@ export default defineComponent({
|
||||
async function UpdateImageGenerateCategory(value, option) {
|
||||
// 更新配置文件和缓存
|
||||
window.config.image_generate_category = value
|
||||
promptStore.UpdateImageGenerateCategory(value)
|
||||
// 保存文件
|
||||
await window.api.ModifySampleSetting(
|
||||
JSON.stringify({
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
<n-popover trigger="hover">
|
||||
<template #trigger>
|
||||
<n-input-number
|
||||
style="margin-left: 10px; width: 130px"
|
||||
style="margin-left: 10px; width: 100px"
|
||||
size="small"
|
||||
placeholder="输入合并的行数"
|
||||
:max="10000"
|
||||
@@ -58,6 +58,9 @@
|
||||
<n-button color="#80a492" size="small" style="margin-left: 10px" @click="mergeWord"
|
||||
>合并</n-button
|
||||
>
|
||||
<n-button color="#f3a694" size="small" style="margin-left: 10px" @click="CopyWord"
|
||||
>一键复制内容</n-button
|
||||
>
|
||||
</div>
|
||||
<n-input
|
||||
style="margin-top: 5px"
|
||||
@@ -86,7 +89,7 @@ import {
|
||||
NInputNumber
|
||||
} from 'naive-ui'
|
||||
import { DEFINE_STRING } from '../../../../../define/define_string'
|
||||
import { AddCircleOutline } from '@vicons/ionicons5'
|
||||
import { AddCircleOutline, Copy } from '@vicons/ionicons5'
|
||||
import InputDialogContent from './InputDialogContent.vue'
|
||||
import { max } from 'lodash'
|
||||
|
||||
@@ -176,13 +179,11 @@ export default defineComponent({
|
||||
style: `width : ${dialogWidth}px; min-height : ${dialogHeight}px`,
|
||||
maskClosable: false,
|
||||
onClose: async () => {
|
||||
debugger
|
||||
write_setting.value.split_char = split_ref.value.data
|
||||
// 保存数据
|
||||
await window.api.SaveDefineConfigJsonByProperty(
|
||||
JSON.stringify(['clip_setting', 'write_setting', toRaw(write_setting.value), false]),
|
||||
(value) => {
|
||||
debugger
|
||||
console.log(value)
|
||||
if (value.code == 0) {
|
||||
message.error(value.message)
|
||||
@@ -208,7 +209,6 @@ export default defineComponent({
|
||||
await window.api.SaveDefineConfigJsonByProperty(
|
||||
JSON.stringify(['clip_setting', 'write_setting', toRaw(write_setting.value), false]),
|
||||
(value) => {
|
||||
debugger
|
||||
console.log(value)
|
||||
if (value.code == 0) {
|
||||
message.error(value.message)
|
||||
@@ -224,7 +224,6 @@ export default defineComponent({
|
||||
* 一键格式化
|
||||
*/
|
||||
async function formateWrite() {
|
||||
debugger
|
||||
let split_arr = Array.from(write_setting.value.split_char)
|
||||
split_arr.forEach((item) => {
|
||||
let specialCharacters = [
|
||||
@@ -274,6 +273,19 @@ export default defineComponent({
|
||||
ChangeWordInput()
|
||||
}
|
||||
|
||||
/**
|
||||
* 复制数据到剪贴板
|
||||
*/
|
||||
async function CopyWord() {
|
||||
// 获取当前的所有的word
|
||||
try {
|
||||
await navigator.clipboard.writeText(word.value)
|
||||
message.success('复制成功')
|
||||
} catch (error) {
|
||||
message.error('复制失败')
|
||||
}
|
||||
}
|
||||
|
||||
return {
|
||||
data,
|
||||
rowCount,
|
||||
@@ -285,7 +297,8 @@ export default defineComponent({
|
||||
write_setting,
|
||||
mergeCountChange,
|
||||
formateWrite,
|
||||
mergeWord
|
||||
mergeWord,
|
||||
CopyWord
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
@@ -158,7 +158,7 @@ export default defineComponent({
|
||||
|
||||
// 设置窗体的高度
|
||||
function setHeight() {
|
||||
debugger
|
||||
|
||||
let div = document.getElementById('import_word_and_srt')
|
||||
div.style.height = hh + 'px'
|
||||
}
|
||||
@@ -423,7 +423,7 @@ export default defineComponent({
|
||||
})
|
||||
return
|
||||
} else {
|
||||
debugger
|
||||
|
||||
// 先保存单个文件(然后在config文件中指向对应的文件)
|
||||
await window.api.OriginalAddWebuiJson(JSON.stringify(data.value), async (value) => {
|
||||
if (value.code == 0) {
|
||||
@@ -466,7 +466,7 @@ export default defineComponent({
|
||||
})
|
||||
|
||||
await window.api.ImportSrtAndGetTime([toRaw(data.value), srt_path], (value) => {
|
||||
debugger
|
||||
|
||||
if (value.code == 0) {
|
||||
message.error(value.message)
|
||||
return
|
||||
|
||||
@@ -252,7 +252,6 @@ export default defineComponent({
|
||||
await window.api.GetDefineConfigJsonByProperty(
|
||||
JSON.stringify(['img_base', 'mj_config', false, null]),
|
||||
(value) => {
|
||||
debugger
|
||||
console.log(value)
|
||||
if (value.code == 0) {
|
||||
message.error(value.message)
|
||||
@@ -363,7 +362,6 @@ export default defineComponent({
|
||||
|
||||
message.success('保存成功')
|
||||
} catch (error) {
|
||||
debugger
|
||||
message.error('保存失败 ' + error.message)
|
||||
}
|
||||
}
|
||||
@@ -386,7 +384,6 @@ export default defineComponent({
|
||||
style: `width : ${dialogWidth}px; min-height : ${dialogHeight}px`,
|
||||
maskClosable: false,
|
||||
onClose: async () => {
|
||||
debugger
|
||||
let mj_bad_prompt = bad_prompt_ref.value.data
|
||||
|
||||
if (mj_bad_prompt == null || mj_bad_prompt == '') {
|
||||
|
||||
@@ -24,7 +24,9 @@ import {
|
||||
watch,
|
||||
toRaw,
|
||||
render,
|
||||
onBeforeUnmount
|
||||
onBeforeUnmount,
|
||||
provide,
|
||||
nextTick
|
||||
} from 'vue'
|
||||
import {
|
||||
NDataTable,
|
||||
@@ -36,7 +38,6 @@ import {
|
||||
NPopover,
|
||||
useDialog,
|
||||
NCheckbox,
|
||||
NSelect,
|
||||
NIcon
|
||||
} from 'naive-ui'
|
||||
import { DEFINE_STRING } from '../../../../define/define_string'
|
||||
@@ -51,11 +52,14 @@ import DataTableGptPromptRow from './Components/DataTableGptPromptRow.vue'
|
||||
import DataTableParameterRow from './Components/DataTableParameterRow.vue'
|
||||
import { Reload } from '@vicons/ionicons5'
|
||||
import {
|
||||
checkStringValueDeletePrefix,
|
||||
checkStringValueAddPrefix,
|
||||
checkStringValueAddSuffix,
|
||||
checkStringValueDeletePrefix
|
||||
checkStringValueDeleteSuffix
|
||||
} from '../../../../main/generalTools'
|
||||
|
||||
import { usePromptStore } from '../../../../stores/prompt'
|
||||
|
||||
export default defineComponent({
|
||||
components: {
|
||||
NImage,
|
||||
@@ -70,9 +74,9 @@ export default defineComponent({
|
||||
Reload,
|
||||
NIcon
|
||||
},
|
||||
props: ['initData', 'prefix_prompt', 'suffix_prompt', 'tags', 'InitTags'],
|
||||
props: ['initData', 'tags', 'InitTags'],
|
||||
setup(props) {
|
||||
console.log('输出文件夹位置', props.initData)
|
||||
let promptStore = usePromptStore()
|
||||
let data = ref(props.initData)
|
||||
let tags = ref(props.tags)
|
||||
let message = useMessage()
|
||||
@@ -80,8 +84,6 @@ export default defineComponent({
|
||||
let selectKey = ref([])
|
||||
let promptChineseRef = ref(null)
|
||||
let maxHeight = ref(null)
|
||||
let prefix_prompt = ref(props.prefix_prompt)
|
||||
let suffix_prompt = ref(props.suffix_prompt)
|
||||
|
||||
let titleCharacterAndSceneRef = ref(null)
|
||||
let dataCharacterAndSceneRef = ref(null)
|
||||
@@ -96,6 +98,9 @@ export default defineComponent({
|
||||
let AutoSaveDataJsonDebounced = debounce(AutoSaveDataJson, 3000)
|
||||
let SaveDataJsonDebounced = debounce(AutoSaveDataJson, 1000)
|
||||
|
||||
promptStore.UpdateImageGenerateCategory(
|
||||
window.config.image_generate_category ? window.config.image_generate_category : 'sd'
|
||||
)
|
||||
let image_generate_category = ref(
|
||||
window.config.image_generate_category ? window.config.image_generate_category : 'sd'
|
||||
)
|
||||
@@ -125,22 +130,9 @@ export default defineComponent({
|
||||
selectStyle.value[i] = tags.value.style_tags[index]
|
||||
}
|
||||
}
|
||||
},
|
||||
{ deep: true }
|
||||
)
|
||||
|
||||
watch(
|
||||
() => props.prefix_prompt,
|
||||
(newVal) => {
|
||||
prefix_prompt.value = newVal
|
||||
},
|
||||
{ deep: true }
|
||||
)
|
||||
|
||||
watch(
|
||||
() => props.suffix_prompt,
|
||||
(newVal) => {
|
||||
suffix_prompt.value = newVal
|
||||
// 修改store中的数据
|
||||
promptStore.UpdateSelectStyleSort(toRaw(selectStyle.value))
|
||||
},
|
||||
{ deep: true }
|
||||
)
|
||||
@@ -210,20 +202,25 @@ export default defineComponent({
|
||||
} catch (error) {
|
||||
message.error('人物角色刷新失败,请重试' + error.toString())
|
||||
}
|
||||
}
|
||||
},
|
||||
getData: GetData,
|
||||
modifyData: ModifyData
|
||||
}
|
||||
})
|
||||
},
|
||||
className: 'prompt_row',
|
||||
key: 'character',
|
||||
width: '200',
|
||||
width: '210',
|
||||
render(row, index) {
|
||||
return h(DataTableCharacterAndScene, {
|
||||
ref: dataCharacterAndSceneRef,
|
||||
type: 'data',
|
||||
row: row,
|
||||
tags: tags,
|
||||
characterSelectModel: characterSelectModel
|
||||
characterSelectModel: characterSelectModel,
|
||||
func: {
|
||||
getData: GetData
|
||||
}
|
||||
})
|
||||
}
|
||||
},
|
||||
@@ -268,6 +265,8 @@ export default defineComponent({
|
||||
index: index,
|
||||
func: {
|
||||
mJBadPromptCheck: MJBadPromptCheck,
|
||||
modifyData: ModifyData,
|
||||
getData: GetData,
|
||||
mergePrompt: MergePrompt
|
||||
}
|
||||
})
|
||||
@@ -281,7 +280,10 @@ export default defineComponent({
|
||||
row: row,
|
||||
index: index,
|
||||
func: {
|
||||
nextGenerateImage: NextGenerateImage
|
||||
nextGenerateImage: NextGenerateImage,
|
||||
modifyData: ModifyData,
|
||||
getData: GetData,
|
||||
mergePrompt: MergePrompt
|
||||
}
|
||||
})
|
||||
}
|
||||
@@ -292,15 +294,14 @@ export default defineComponent({
|
||||
return h(DataTableParameterRow, {
|
||||
type: 'title',
|
||||
row: row,
|
||||
index: index,
|
||||
image_generate_category: image_generate_category
|
||||
index: index
|
||||
})
|
||||
},
|
||||
key: 'parameter',
|
||||
width: '130',
|
||||
render(row, index) {
|
||||
return h(DataTableParameterRow, {
|
||||
type: `data_${image_generate_category.value}`,
|
||||
type: `data_${promptStore.GetImageGenerateCategory}`,
|
||||
row: row,
|
||||
index: index
|
||||
})
|
||||
@@ -352,7 +353,6 @@ export default defineComponent({
|
||||
onMounted(async () => {
|
||||
// 直接或整个cinfig文件
|
||||
await window.api.GetConfigJson(JSON.stringify([null, {}]), async (value) => {
|
||||
debugger
|
||||
if (value.code == 0) {
|
||||
message.error(value.message)
|
||||
return
|
||||
@@ -374,6 +374,7 @@ export default defineComponent({
|
||||
type: 'style_main'
|
||||
})
|
||||
}
|
||||
promptStore.UpdateSelectStyleSort(toRaw(selectStyle.value))
|
||||
})
|
||||
|
||||
// 判断data中的数据是不是有chinese text
|
||||
@@ -396,7 +397,6 @@ export default defineComponent({
|
||||
window.api.setEventListen(
|
||||
[DEFINE_STRING.SD_ORIGINAL_GENERATE_IMAGE_RETURN, window.id],
|
||||
(value) => {
|
||||
debugger
|
||||
if (value.code == 0) {
|
||||
message.error('生成图片错误,错误信息如下:' + value.message)
|
||||
return
|
||||
@@ -437,6 +437,9 @@ export default defineComponent({
|
||||
|
||||
onBeforeUnmount(async () => {
|
||||
await AutoSaveDataJson()
|
||||
window.api.removeEventListen(DEFINE_STRING.DISCORD.MAIN_DISCORD_MESSAGE_CHANGE)
|
||||
window.api.removeEventListen(DEFINE_STRING.SD_ORIGINAL_GENERATE_IMAGE_RETURN)
|
||||
window.api.removeEventListen(DEFINE_STRING.TRANSLATE_RETURN_REFRESH)
|
||||
})
|
||||
|
||||
// 接收Discord的修改信息
|
||||
@@ -456,7 +459,6 @@ export default defineComponent({
|
||||
|
||||
// 处理数据
|
||||
if (value.type == 'created') {
|
||||
debugger
|
||||
console.log('接收Discord的创建消息', value)
|
||||
// 找到对应ID的data数据
|
||||
|
||||
@@ -554,7 +556,6 @@ export default defineComponent({
|
||||
async function TranslatePrompt(translateData, from, to) {
|
||||
console.log(translateData)
|
||||
await window.api.TranslatePrompt([translateData, from, to, window.id, true], (value) => {
|
||||
debugger
|
||||
console.log(value)
|
||||
})
|
||||
}
|
||||
@@ -583,13 +584,14 @@ export default defineComponent({
|
||||
content: () =>
|
||||
h(InputDialogContent, {
|
||||
ref: prefix_prompt_ref,
|
||||
initData: prefix_prompt.value,
|
||||
initData: promptStore.GetPrefix,
|
||||
placeholder: '请输入前缀'
|
||||
}),
|
||||
style: `width : ${dialogWidth}px; min-height : ${dialogHeight}px`,
|
||||
maskClosable: false,
|
||||
onClose: async () => {
|
||||
prefix_prompt.value = prefix_prompt_ref.value.data
|
||||
let prefix = prefix_prompt_ref.value.data
|
||||
promptStore.UpdatePrefix(prefix)
|
||||
// 保存通用前缀
|
||||
await window.api.SaveCopywritingInformation(
|
||||
[prefix_prompt_ref.value.data, 'prefix_prompt', false],
|
||||
@@ -608,7 +610,6 @@ export default defineComponent({
|
||||
* 选择生成图片的风格
|
||||
*/
|
||||
async function SelectGenerateImagesStyle() {
|
||||
debugger
|
||||
// 判断当前数据是不是存在
|
||||
// 处理数据。获取当前的所有的数据
|
||||
let dialogWidth = window.innerWidth * 0.8
|
||||
@@ -632,7 +633,6 @@ export default defineComponent({
|
||||
let cus_arr = []
|
||||
|
||||
for (let i = 0; i < selectStyle.value.length; i++) {
|
||||
debugger
|
||||
const element = selectStyle.value[i]
|
||||
// 判断是不是主风格
|
||||
if (element.type == 'style_main') {
|
||||
@@ -680,13 +680,14 @@ export default defineComponent({
|
||||
content: () =>
|
||||
h(InputDialogContent, {
|
||||
ref: suffix_prompt_ref,
|
||||
initData: suffix_prompt.value,
|
||||
initData: promptStore.GetSuffix,
|
||||
placeholder: '请输入后缀'
|
||||
}),
|
||||
style: `width : ${dialogWidth}px; min-height : ${dialogHeight}px`,
|
||||
maskClosable: false,
|
||||
onClose: async () => {
|
||||
suffix_prompt.value = suffix_prompt_ref.value.data
|
||||
let suffix = suffix_prompt_ref.value.data
|
||||
promptStore.UpdateSuffix(suffix)
|
||||
await window.api.SaveCopywritingInformation(
|
||||
[suffix_prompt_ref.value.data, 'suffix_prompt', false],
|
||||
(value) => {
|
||||
@@ -709,7 +710,7 @@ export default defineComponent({
|
||||
message.error(value.message)
|
||||
return
|
||||
}
|
||||
debugger
|
||||
|
||||
// 先将所有的数据设置为false
|
||||
for (let i = 0; i < data.value.length; i++) {
|
||||
data.value[i].mj_message = data.value[i].mj_message ? data.value[i].mj_message : {}
|
||||
@@ -838,7 +839,6 @@ export default defineComponent({
|
||||
* @param {*} key 翻译的类型
|
||||
*/
|
||||
async function TranslateAll(key) {
|
||||
debugger
|
||||
// 将中文翻译成英文
|
||||
if (key == 'english') {
|
||||
let tmp_d = []
|
||||
@@ -859,7 +859,6 @@ export default defineComponent({
|
||||
message.success('添加翻译任务成功')
|
||||
})
|
||||
} else if (key == 'chinese') {
|
||||
debugger
|
||||
let t = [[...toRaw(data.value)], 'en', 'zh', false, false]
|
||||
await window.mj.TranslateReturnNowTask(JSON.stringify(t), (value) => {
|
||||
if (value.code == 0) {
|
||||
@@ -871,175 +870,6 @@ export default defineComponent({
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* SD 模式合并名并
|
||||
* @param character_string
|
||||
* @param scene_string
|
||||
* @param gpt_prompt
|
||||
*/
|
||||
function SDMergePrompt(element) {
|
||||
let character_string = ''
|
||||
element.character_tags?.forEach((item) => {
|
||||
character_string += ', ' + item.prompt
|
||||
if (item.lora && item.lora != '无' && item.lora_weight) {
|
||||
character_string += `, <lora:${item.lora}:${item.lora_weight}>`
|
||||
}
|
||||
})
|
||||
// 判断 character_string 有数据,有的话删除第一个逗号
|
||||
character_string = checkStringValueDeletePrefix(character_string, ',')
|
||||
|
||||
// 获取当前的场景提示词
|
||||
let scene_string = ''
|
||||
element.scene_tags?.forEach((item) => {
|
||||
scene_string += ', ' + item.prompt
|
||||
})
|
||||
|
||||
let style_string = ''
|
||||
|
||||
selectStyle.value.forEach((item) => {
|
||||
if (item.type && item.type == 'style_main') {
|
||||
style_string += ', ' + item.prompt
|
||||
}
|
||||
})
|
||||
|
||||
// 判断 scene_string 有数据,有的话删除第一个逗号
|
||||
scene_string = checkStringValueDeletePrefix(scene_string, ',')
|
||||
style_string = checkStringValueDeletePrefix(style_string, ',')
|
||||
style_string = checkStringValueAddSuffix(style_string, ',')
|
||||
|
||||
return `${style_string} ${checkStringValueAddSuffix(
|
||||
character_string,
|
||||
', '
|
||||
)}${checkStringValueAddSuffix(scene_string, ', ')}${checkStringValueAddSuffix(
|
||||
element.gpt_prompt,
|
||||
', '
|
||||
)}`
|
||||
}
|
||||
|
||||
/**
|
||||
* 将所有的数据进行拼接
|
||||
* @param prefix 前缀
|
||||
* @param character_string 人物提示词
|
||||
* @param scene_string 场景提示词
|
||||
* @param gpt_prompt GPT提示词
|
||||
* @param suffix 后缀
|
||||
*/
|
||||
function MJMergePrompt(prefix, element, suffix) {
|
||||
debugger
|
||||
let character_string = ''
|
||||
let cref_url = ''
|
||||
element.character_tags?.forEach((item) => {
|
||||
character_string += ', ' + item.prompt
|
||||
if (item.image_url && item.image_url != '' && item.cref_cw) {
|
||||
cref_url += ` ${item.image_url} `
|
||||
}
|
||||
})
|
||||
// 判断cref_url 是不是有数据,有的话添加 --cref
|
||||
cref_url = checkStringValueAddPrefix(cref_url, ' --cref ')
|
||||
|
||||
if (element.character_tags && element.character_tags.length > 0) {
|
||||
cref_url = checkStringValueAddSuffix(
|
||||
cref_url,
|
||||
` --cw ${element.character_tags[0].cref_cw} `
|
||||
)
|
||||
}
|
||||
// 判断 character_string 有数据,有的话删除第一个逗号
|
||||
character_string = checkStringValueDeletePrefix(character_string, ',')
|
||||
|
||||
// 获取当前的场景提示词
|
||||
let scene_string = ''
|
||||
element.scene_tags?.forEach((item) => {
|
||||
scene_string += ', ' + item.prompt
|
||||
})
|
||||
// 判断 scene_string 有数据,有的话删除第一个逗号
|
||||
scene_string = checkStringValueDeletePrefix(scene_string, ',')
|
||||
|
||||
// 获取当前的自定义风格
|
||||
|
||||
let style_string = ''
|
||||
let style_url = ''
|
||||
let sw = 0
|
||||
|
||||
selectStyle.value.forEach((item) => {
|
||||
if (item.type && item.type == 'style_main') {
|
||||
style_string += ', ' + item.prompt
|
||||
if (sw == 0) {
|
||||
sw = item.sref_sw
|
||||
}
|
||||
if (!isEmpty(item.image_url)) {
|
||||
let url = item.image_url ? item.image_url : ''
|
||||
style_url += ' ' + url
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
style_url = checkStringValueAddPrefix(style_url, '--sref ')
|
||||
style_url = checkStringValueAddSuffix(style_url, ` --sw ${sw}`)
|
||||
style_string = checkStringValueDeletePrefix(style_string, ',')
|
||||
style_string = checkStringValueAddSuffix(style_string, ', ')
|
||||
|
||||
return ` ${style_string} ${checkStringValueAddSuffix(
|
||||
prefix,
|
||||
', '
|
||||
)}${checkStringValueAddSuffix(character_string, ', ')}${checkStringValueAddSuffix(
|
||||
scene_string,
|
||||
', '
|
||||
)}${checkStringValueAddSuffix(element.gpt_prompt, ', ')} ${checkStringValueAddSuffix(
|
||||
suffix,
|
||||
' '
|
||||
)} ${cref_url} ${style_url}`
|
||||
}
|
||||
|
||||
/**
|
||||
* 生成提示词
|
||||
*/
|
||||
async function MergePrompt(key) {
|
||||
try {
|
||||
debugger
|
||||
// 判断该当前是不是有风格
|
||||
// 获取当前的风格ID
|
||||
let style_str = ''
|
||||
for (let i = 0; i < selectStyle.value.length; i++) {
|
||||
const element = selectStyle.value[i]
|
||||
style_str += element.english_style + ','
|
||||
}
|
||||
|
||||
// 获取当前的前缀和后缀
|
||||
let prefix = prefix_prompt.value ? prefix_prompt.value : ''
|
||||
let suffix = suffix_prompt.value ? suffix_prompt.value : ''
|
||||
|
||||
for (let i = 0; i < data.value.length; i++) {
|
||||
const element = data.value[i]
|
||||
let end_prompt = ''
|
||||
if (key == null) {
|
||||
// 判断当前的分类是什么,通过分类来判断合并提示词
|
||||
if (image_generate_category.value == 'sd') {
|
||||
end_prompt = SDMergePrompt(element)
|
||||
} else if (image_generate_category.value == 'mj') {
|
||||
end_prompt = MJMergePrompt(prefix, element, suffix)
|
||||
} else if (image_generate_category.value == 'd3') {
|
||||
message.error('该分类暂时不可用')
|
||||
return
|
||||
} else {
|
||||
message.error('合并提示词错误:未知的合并提示词类型')
|
||||
return
|
||||
}
|
||||
} else if (key == 'mj_merge') {
|
||||
end_prompt = MJMergePrompt(prefix, element, suffix)
|
||||
} else if (key == 'sd_merge') {
|
||||
end_prompt = SDMergePrompt(element)
|
||||
} else {
|
||||
message.error('合并提示词错误:未知的合并提示词类型')
|
||||
return
|
||||
}
|
||||
// 风格 + 前缀 + 人物 + 场景 + 词 + 后缀
|
||||
data.value[i].prompt = end_prompt
|
||||
}
|
||||
} catch (error) {
|
||||
message.error('生成提示词错误,错误信息如下:' + error.message)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 采集图片
|
||||
*/
|
||||
@@ -1102,7 +932,6 @@ export default defineComponent({
|
||||
* 一拆四
|
||||
*/
|
||||
async function OneSplitFour() {
|
||||
debugger
|
||||
// 判断当前的data中是不是都有图片
|
||||
let min
|
||||
let pra = []
|
||||
@@ -1138,7 +967,6 @@ export default defineComponent({
|
||||
|
||||
// 将当前数据传到后端进行一拆四
|
||||
await window.img.OneSplitFour(JSON.stringify([pra, min]), (value) => {
|
||||
debugger
|
||||
if (value.code == 0) {
|
||||
message.error('一拆四失败,错误信息如下:' + value.message)
|
||||
return
|
||||
@@ -1146,6 +974,257 @@ export default defineComponent({
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* SD 模式合并名并
|
||||
* @param character_string
|
||||
* @param scene_string
|
||||
* @param gpt_prompt
|
||||
*/
|
||||
function SDMergePrompt(element) {
|
||||
// 人物
|
||||
let character_string = ''
|
||||
element.character_tags?.forEach((item) => {
|
||||
character_string += ', ' + item.prompt
|
||||
if (item.lora && item.lora != '无' && item.lora_weight) {
|
||||
character_string += `, <lora:${item.lora}:${item.lora_weight}>`
|
||||
}
|
||||
})
|
||||
// 判断 character_string 有数据,有的话删除第一个逗号
|
||||
character_string = checkStringValueDeletePrefix(character_string, ',')
|
||||
character_string = checkStringValueAddSuffix(character_string, ', ')
|
||||
|
||||
// 获取当前的场景提示词
|
||||
let scene_string = ''
|
||||
element.scene_tags?.forEach((item) => {
|
||||
scene_string += ', ' + item.prompt
|
||||
})
|
||||
// 判断 scene_string 有数据,有的话删除第一个逗号
|
||||
scene_string = checkStringValueDeletePrefix(scene_string, ',')
|
||||
scene_string = checkStringValueAddSuffix(scene_string, ', ')
|
||||
|
||||
let style_string = ''
|
||||
for (let i = 0; i < promptStore.GetSelectStyle.length; i++) {
|
||||
const element = promptStore.GetSelectStyle[i]
|
||||
if (element.type == 'style_main') {
|
||||
style_string += element.prompt + ', '
|
||||
if (element.lora && element.lora != '无' && element.lora_weight) {
|
||||
style_string += `<lora:${element.lora}:${element.lora_weight}>, `
|
||||
}
|
||||
} else {
|
||||
style_string += element.english_style
|
||||
}
|
||||
}
|
||||
let prompt_str = `${checkStringValueAddSuffix(promptStore.GetPrefix, ',')}`
|
||||
for (let i = 0; i < promptStore.GetPromptSort.length; i++) {
|
||||
const element = promptStore.GetPromptSort[i]
|
||||
prompt_str += `${'${' + element.value + '}'} `
|
||||
}
|
||||
|
||||
console.log(prompt_str)
|
||||
prompt_str = prompt_str.replace('${style}', style_string)
|
||||
prompt_str = prompt_str.replace('${character}', character_string)
|
||||
prompt_str = prompt_str.replace('${scene}', scene_string)
|
||||
prompt_str = prompt_str.replace(
|
||||
'${prompt}',
|
||||
checkStringValueAddSuffix(element.gpt_prompt, ',')
|
||||
)
|
||||
prompt_str += ` ${promptStore.GetSuffix ? promptStore.GetSuffix : ''}`
|
||||
return prompt_str
|
||||
}
|
||||
|
||||
/**
|
||||
* 将所有的数据进行拼接
|
||||
* @param prefix 前缀
|
||||
* @param character_string 人物提示词
|
||||
* @param scene_string 场景提示词
|
||||
* @param gpt_prompt GPT提示词
|
||||
* @param suffix 后缀
|
||||
*/
|
||||
function MJMergePrompt(prefix, element, suffix, style_str) {
|
||||
let character_string = ''
|
||||
let cref_url = ''
|
||||
element.character_tags?.forEach((item) => {
|
||||
character_string += ', ' + item.prompt
|
||||
if (item.image_url && item.image_url != '' && item.cref_cw) {
|
||||
cref_url += ` ${item.image_url} `
|
||||
}
|
||||
})
|
||||
// 判断cref_url 是不是有数据,有的话添加 --cref
|
||||
cref_url = checkStringValueAddPrefix(cref_url, ' --cref ')
|
||||
|
||||
if (element.character_tags && element.character_tags.length > 0) {
|
||||
cref_url = checkStringValueAddSuffix(
|
||||
cref_url,
|
||||
` --cw ${element.character_tags[0].cref_cw} `
|
||||
)
|
||||
}
|
||||
// 判断 character_string 有数据,有的话删除第一个逗号
|
||||
character_string = checkStringValueDeletePrefix(character_string, ',')
|
||||
character_string = checkStringValueAddSuffix(character_string, ', ')
|
||||
|
||||
// 获取当前的场景提示词
|
||||
let scene_string = ''
|
||||
element.scene_tags?.forEach((item) => {
|
||||
scene_string += ', ' + item.prompt
|
||||
})
|
||||
// 判断 scene_string 有数据,有的话删除第一个逗号
|
||||
scene_string = checkStringValueDeletePrefix(scene_string, ',')
|
||||
scene_string = checkStringValueAddSuffix(scene_string, ', ')
|
||||
|
||||
// 获取当前的自定义风格的垫图字符串
|
||||
let style_url = ''
|
||||
let sw = 0
|
||||
promptStore.GetSelectStyle.forEach((item) => {
|
||||
if (item.type && item.type == 'style_main') {
|
||||
if (sw == 0) {
|
||||
sw = item.sref_sw
|
||||
}
|
||||
if (!isEmpty(item.image_url)) {
|
||||
let url = item.image_url ? item.image_url : ''
|
||||
style_url += ' ' + url
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
style_url = checkStringValueAddPrefix(style_url, '--sref ')
|
||||
style_url = checkStringValueAddSuffix(style_url, ` --sw ${sw}`)
|
||||
|
||||
// 开始拼接,最开始返回基础数据
|
||||
if (promptStore.GetPromptSort.length != 4) {
|
||||
message.error('获取设置的提示词排序错误')
|
||||
return
|
||||
}
|
||||
prefix = checkStringValueAddSuffix(prefix, ', ')
|
||||
suffix = checkStringValueAddPrefix(suffix, ' ')
|
||||
|
||||
let prompt_str = ` ${prefix}`
|
||||
for (let i = 0; i < promptStore.GetPromptSort.length; i++) {
|
||||
const element = promptStore.GetPromptSort[i]
|
||||
prompt_str += `${'${' + element.value + '}'}`
|
||||
}
|
||||
|
||||
console.log(prompt_str)
|
||||
prompt_str = prompt_str.replace('${style}', style_str)
|
||||
prompt_str = prompt_str.replace('${character}', character_string)
|
||||
prompt_str = prompt_str.replace('${scene}', scene_string)
|
||||
prompt_str = prompt_str.replace(
|
||||
'${prompt}',
|
||||
checkStringValueAddSuffix(element.gpt_prompt, ',')
|
||||
)
|
||||
prompt_str += ` ${suffix}${cref_url} ${style_url}`
|
||||
return prompt_str
|
||||
}
|
||||
|
||||
/**
|
||||
* 合并提示词
|
||||
*/
|
||||
function MergePrompt(id, key) {
|
||||
try {
|
||||
// 判断当前是不是又id,有ID的话就是单个数据,没有ID的话就要全部处理
|
||||
// 获取当前选中的样式
|
||||
|
||||
console.log(promptStore.GetSelectStyle)
|
||||
|
||||
let style_str = ''
|
||||
for (let i = 0; i < promptStore.GetSelectStyle.length; i++) {
|
||||
const element = promptStore.GetSelectStyle[i]
|
||||
if (element.type == 'style_main') {
|
||||
style_str += element.prompt + ', '
|
||||
} else {
|
||||
style_str += element.english_style + ', '
|
||||
}
|
||||
}
|
||||
|
||||
style_str = checkStringValueDeleteSuffix(style_str, ', ')
|
||||
style_str = checkStringValueAddSuffix(style_str, ', ')
|
||||
|
||||
// 判断判断是不是在行中处理
|
||||
let temp_data = []
|
||||
if (id) {
|
||||
// 找到对应的行数
|
||||
temp_data = [toRaw(data.value.find((item) => item.id == id))]
|
||||
} else {
|
||||
// 获取所有的数据
|
||||
temp_data = toRaw(data.value)
|
||||
}
|
||||
|
||||
// 要是空的话,先获取对应的分类数据
|
||||
if (key == null) {
|
||||
// 获取当前的分类
|
||||
if (image_generate_category.value == 'sd') {
|
||||
key = 'sd_merge'
|
||||
} else if (image_generate_category.value == 'mj') {
|
||||
key = 'mj_merge'
|
||||
} else if (image_generate_category.value == 'd3') {
|
||||
message.error('该分类暂时不可用')
|
||||
return
|
||||
} else {
|
||||
message.error('合并提示词错误:未知的合并提示词类型')
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
// TODO 要删除前后缀
|
||||
for (let i = 0; i < temp_data.length; i++) {
|
||||
const element = temp_data[i]
|
||||
let end_prompt = ''
|
||||
if (key == 'mj_merge') {
|
||||
end_prompt = MJMergePrompt(
|
||||
promptStore.GetPrefix,
|
||||
element,
|
||||
promptStore.GetSuffix,
|
||||
style_str
|
||||
)
|
||||
} else if (key == 'sd_merge') {
|
||||
end_prompt = SDMergePrompt(element)
|
||||
} else if ((key = 'd3_merge')) {
|
||||
// D3合并
|
||||
message.error('该分类暂时不可用')
|
||||
return
|
||||
} else {
|
||||
message.error('合并提示词错误:未知的合并提示词类型')
|
||||
return
|
||||
}
|
||||
// temp_data[i].prompt = end_prompt
|
||||
// 找到对应的Id的data
|
||||
let index = data.value.findIndex((it) => it.id == element.id)
|
||||
if (index == -1) {
|
||||
message.error('拼接完成,没有找到对应的ID')
|
||||
return
|
||||
}
|
||||
data.value[index].prompt = end_prompt
|
||||
}
|
||||
} catch (error) {
|
||||
message.error('生成提示词错误,错误信息如下:' + error.message)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取当前的data
|
||||
*/
|
||||
function GetData(id) {
|
||||
if (id) {
|
||||
// 获取指定的数据
|
||||
let index = data.value.findIndex((item) => item.id == id)
|
||||
if (index == -1) {
|
||||
message.error('指定ID的行没有找到')
|
||||
return
|
||||
}
|
||||
return data.value[index]
|
||||
}
|
||||
return toRaw(data.value)
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改data数据
|
||||
* @param callback
|
||||
*/
|
||||
function ModifyData(callback) {
|
||||
if (callback) {
|
||||
data.value = callback()
|
||||
}
|
||||
}
|
||||
|
||||
return {
|
||||
data,
|
||||
columns: createColumns({}),
|
||||
@@ -1161,9 +1240,9 @@ export default defineComponent({
|
||||
prefix_prompt_ref,
|
||||
suffix_prompt_ref,
|
||||
characterSelectModel,
|
||||
image_generate_category,
|
||||
titleCharacterAndSceneRef,
|
||||
dataCharacterAndSceneRef
|
||||
dataCharacterAndSceneRef,
|
||||
image_generate_category
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
@@ -9,13 +9,7 @@
|
||||
</MenuButton>
|
||||
</div>
|
||||
<div id="data-table" style="margin-top: 10px">
|
||||
<DataTable
|
||||
:tags="tags"
|
||||
:initData="data"
|
||||
:suffix_prompt="suffix_prompt"
|
||||
:prefix_prompt="prefix_prompt"
|
||||
:InitTags="InitTags"
|
||||
></DataTable>
|
||||
<DataTable :tags="tags" :initData="data" :InitTags="InitTags"></DataTable>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -25,6 +19,7 @@ import { NImage, useMessage } from 'naive-ui'
|
||||
import { DEFINE_STRING } from '../../../../define/define_string'
|
||||
import MenuButton from './MenuButton.vue'
|
||||
import DataTable from './DataTable.vue'
|
||||
import { usePromptStore } from '../../../../stores/prompt'
|
||||
|
||||
export default defineComponent({
|
||||
components: {
|
||||
@@ -33,16 +28,16 @@ export default defineComponent({
|
||||
MenuButton
|
||||
},
|
||||
setup() {
|
||||
let promptStore = usePromptStore()
|
||||
let message = useMessage()
|
||||
let data = ref([])
|
||||
let tags = ref({})
|
||||
let AnalyzeCharacter = ref('')
|
||||
let TagTreeData = ref([])
|
||||
let suffix_prompt = ref(null)
|
||||
let prefix_prompt = ref(null)
|
||||
let promptError = true
|
||||
|
||||
async function InitData() {
|
||||
|
||||
// 加载
|
||||
// 初始化加载项目下面的分镜好的文案
|
||||
// 并判断是不是有洗稿后的文件。一并加载
|
||||
@@ -65,20 +60,18 @@ export default defineComponent({
|
||||
|
||||
// 判断是不是有前缀
|
||||
await window.api.GetConfigJson(JSON.stringify([null, {}]), async (value) => {
|
||||
debugger
|
||||
if (value.code == 0) {
|
||||
message.error(value.message)
|
||||
return
|
||||
}
|
||||
suffix_prompt.value = value.data.suffix_prompt
|
||||
prefix_prompt.value = value.data.prefix_prompt
|
||||
promptStore.UpdateSuffix(value.data.suffix_prompt)
|
||||
promptStore.UpdatePrefix(value.data.prefix_prompt)
|
||||
})
|
||||
|
||||
// 读取data数据对应的prompt文件
|
||||
for (let i = 0; i < data.value.length; i++) {
|
||||
const item = data.value[i]
|
||||
await window.api.GetPromptJson(item.name, (value) => {
|
||||
debugger
|
||||
console.log(value)
|
||||
if (value.code == 0 && promptError) {
|
||||
message.error(value.message)
|
||||
@@ -98,7 +91,7 @@ export default defineComponent({
|
||||
message.error(value.message)
|
||||
return
|
||||
}
|
||||
debugger
|
||||
|
||||
tags.value = value.data
|
||||
// 加载完毕之后,需要刷新当前的data中的tag数据
|
||||
console.log(data, tags)
|
||||
@@ -112,7 +105,9 @@ export default defineComponent({
|
||||
// 循环判断当前的character_tags对应的key在tags.character_tags中是否存在,存在覆盖,不存在删除
|
||||
for (let j = element.character_tags.length - 1; j >= 0; j--) {
|
||||
const item = element.character_tags[j]
|
||||
let index = tags.value.character_tags.findIndex((tag) => tag.key == item.key)
|
||||
let index = tags.value.character_tags.findIndex(
|
||||
(tag) => tag.key == item.key && tag.isShow == true
|
||||
)
|
||||
if (index != -1) {
|
||||
element.character_tags[j] = tags.value.character_tags[index]
|
||||
} else {
|
||||
@@ -126,17 +121,30 @@ export default defineComponent({
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 初始化数据
|
||||
*/
|
||||
async function InItPromptSort() {
|
||||
|
||||
await window.pmpt.GetPromptSort((value) => {
|
||||
if (value.code == 0) {
|
||||
message.error(value.message)
|
||||
return
|
||||
}
|
||||
promptStore.InitPromptSort(value.data)
|
||||
})
|
||||
}
|
||||
|
||||
onMounted(async () => {
|
||||
await InitData()
|
||||
await InitTags()
|
||||
await InItPromptSort()
|
||||
})
|
||||
|
||||
return {
|
||||
data,
|
||||
AnalyzeCharacter,
|
||||
TagTreeData,
|
||||
prefix_prompt,
|
||||
suffix_prompt,
|
||||
InitData,
|
||||
InitTags,
|
||||
tags
|
||||
|
||||
@@ -324,7 +324,7 @@ export default defineComponent({
|
||||
)
|
||||
} else if (value == 'resetPrompt') {
|
||||
// 重置提示词
|
||||
debugger
|
||||
|
||||
console.log(data)
|
||||
await ResetPrompt()
|
||||
} else if (value == 'resetImage') {
|
||||
@@ -349,7 +349,7 @@ export default defineComponent({
|
||||
auto_save,
|
||||
railStyle,
|
||||
AutoSaveUpdate: (value) => {
|
||||
debugger
|
||||
|
||||
auto_save.value = value
|
||||
window.config.auto_save = value
|
||||
},
|
||||
|
||||
@@ -191,7 +191,7 @@ export default defineComponent({
|
||||
* 获取温馨提示列表(右上角)
|
||||
*/
|
||||
async function getFriendlyReminderList() {
|
||||
debugger;
|
||||
|
||||
friendlyReminderData.value = [];
|
||||
await window.api.getFriendlyReminderList((value) => {
|
||||
friendlyReminderData.value = value.value.filter(item => item.id != "0" && item.id != "1")
|
||||
@@ -203,7 +203,7 @@ export default defineComponent({
|
||||
*/
|
||||
async function GetFriendlyReminder() {
|
||||
let friendlyReminderSelectDraft_name = friendlyReminderSelectDraft.value.draf_name;
|
||||
debugger;
|
||||
|
||||
console.log(friendlyReminderSelectDraft_name);
|
||||
if (friendlyReminderTextName.value == "" || friendlyReminderTextName.value == null || friendlyReminderSelectDraft_name == "" || friendlyReminderSelectDraft_name == null) {
|
||||
message.error("请选择草稿地址和名称");
|
||||
|
||||
@@ -120,7 +120,7 @@ export default defineComponent({
|
||||
return;
|
||||
}
|
||||
await window.api.GenerateGptExampleOut(JSON.stringify(toRaw(prompt_data.value)), (value) => {
|
||||
debugger;
|
||||
|
||||
console.log(value);
|
||||
if (value.code == 0) {
|
||||
message.error(value.message);
|
||||
@@ -134,7 +134,7 @@ export default defineComponent({
|
||||
* 添加提示词案例输出数据
|
||||
*/
|
||||
async function AddExamplePrompt() {
|
||||
debugger;
|
||||
|
||||
let last_data = prompt_data.value.prompt_example[prompt_data.value.prompt_example.length - 1];
|
||||
if (last_data != null) {
|
||||
if (isEmpty(last_data.user_content)) {
|
||||
@@ -156,7 +156,7 @@ export default defineComponent({
|
||||
|
||||
// 删除案例输出
|
||||
async function DeleteExampleOut(example, index) {
|
||||
debugger;
|
||||
|
||||
if (index > prompt_data.value.prompt_example.length - 1) {
|
||||
message.error("删除的案例不存在");
|
||||
return;
|
||||
|
||||
@@ -241,7 +241,7 @@ export default defineComponent({
|
||||
let mj_api_options = ref([])
|
||||
|
||||
let image_suffix = computed(() => {
|
||||
debugger
|
||||
|
||||
let text = image_model_options.value.findIndex((item) => {
|
||||
return item.value == mjSetting.value.image_model
|
||||
})
|
||||
@@ -262,7 +262,7 @@ export default defineComponent({
|
||||
await window.api.GetDefineConfigJsonByProperty(
|
||||
JSON.stringify(['img_base', 'mj_config', false, null]),
|
||||
(value) => {
|
||||
debugger
|
||||
|
||||
console.log(value)
|
||||
if (value.code == 0) {
|
||||
message.error(value.message)
|
||||
@@ -393,7 +393,7 @@ export default defineComponent({
|
||||
)
|
||||
.then((response) => response.json())
|
||||
.then((data) => {
|
||||
debugger
|
||||
|
||||
// 修改配置信息(判断是不是niji或者是mj)
|
||||
// 填充mj,niji数据
|
||||
if (data.applications && data.application_commands) {
|
||||
@@ -447,7 +447,7 @@ export default defineComponent({
|
||||
await window.api.SaveDefineConfigJsonByProperty(
|
||||
JSON.stringify(['img_base', 'mj_config', toRaw(mjSetting.value), false]),
|
||||
(value) => {
|
||||
debugger
|
||||
|
||||
console.log(value)
|
||||
if (value.code == 0) {
|
||||
message.error(value.message)
|
||||
@@ -520,7 +520,7 @@ export default defineComponent({
|
||||
* 打开购买GPT的地址
|
||||
*/
|
||||
async function openGptBuyUrl() {
|
||||
debugger
|
||||
|
||||
let tmp_gb = mj_api_options.value.filter((item) => item.value == mjSetting.value.mj_api_url)
|
||||
if (tmp_gb.length == 0) {
|
||||
message.error('当前选择的服务商没有购买地址!')
|
||||
|
||||
@@ -167,7 +167,7 @@ export default defineComponent({
|
||||
|
||||
onMounted(async () => {
|
||||
await window.api.InitSDConfig((value) => {
|
||||
debugger
|
||||
|
||||
if (value.code == 0) {
|
||||
message.error(value.message)
|
||||
return
|
||||
@@ -231,7 +231,7 @@ export default defineComponent({
|
||||
*/
|
||||
async function LoadSDServiceData() {
|
||||
await window.sd.LoadSDServiceData(toRaw(formValue.value).webui_api_url, (value) => {
|
||||
debugger
|
||||
|
||||
if (value.code == 0) {
|
||||
message.error(value.message)
|
||||
return
|
||||
|
||||
@@ -245,7 +245,7 @@ export default defineComponent({
|
||||
* 加载GPT的配置信息
|
||||
*/
|
||||
async function InitGptOptions() {
|
||||
debugger
|
||||
|
||||
await window.api.getGptBusinessOption('all', (value) => {
|
||||
if (value.code == 0) {
|
||||
message.error(value.message)
|
||||
@@ -368,7 +368,7 @@ export default defineComponent({
|
||||
* 打开购买GPT的地址
|
||||
*/
|
||||
async function openGptBuyUrl() {
|
||||
debugger
|
||||
|
||||
let tmp_gb = gpt_options.value.filter((item) => item.value == formValue.value.gpt_business)
|
||||
if (tmp_gb.length == 0) {
|
||||
message.error('当前选择的服务商没有购买地址!')
|
||||
@@ -387,7 +387,7 @@ export default defineComponent({
|
||||
* @param {*} value 主题名称
|
||||
*/
|
||||
async function ChangeMode(value) {
|
||||
debugger
|
||||
|
||||
console.log(value)
|
||||
const isDarkMode = await window.darkMode.toggle(value)
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -174,7 +174,7 @@ export default defineComponent({
|
||||
* @param image
|
||||
*/
|
||||
function getCurrentWidthHeight(image) {
|
||||
debugger
|
||||
|
||||
let image_width = 512
|
||||
let image_height = 512
|
||||
// 设置图片的大小
|
||||
@@ -212,7 +212,7 @@ export default defineComponent({
|
||||
* 停止画
|
||||
*/
|
||||
function stopDrawing() {
|
||||
debugger
|
||||
|
||||
isDrawing = false
|
||||
canvasHistory.push(imageCanvas.value.toDataURL('image/png'))
|
||||
console.log(canvasHistory)
|
||||
@@ -294,7 +294,7 @@ export default defineComponent({
|
||||
* 回撤
|
||||
*/
|
||||
async function undo() {
|
||||
debugger
|
||||
|
||||
if (step <= 0) {
|
||||
// 如果没有可以撤销的步骤,就清空画布
|
||||
imageContext.value.clearRect(
|
||||
@@ -388,7 +388,7 @@ export default defineComponent({
|
||||
message.error(value.message)
|
||||
return
|
||||
}
|
||||
debugger
|
||||
|
||||
const arrayBuffer = value.data
|
||||
const blob = new Blob([arrayBuffer], { type: 'image/png' })
|
||||
const reader = new FileReader()
|
||||
@@ -406,7 +406,7 @@ export default defineComponent({
|
||||
}
|
||||
|
||||
async function SaveMask() {
|
||||
debugger
|
||||
|
||||
// 判断当前是不是又蒙板
|
||||
if (canvasHistory.length <= 1) {
|
||||
message.error('请先绘制蒙板')
|
||||
@@ -418,7 +418,7 @@ export default defineComponent({
|
||||
await window.img.Base64ToFile(
|
||||
JSON.stringify([base64, `data/mask/mask_${new Date().getTime()}.png`]),
|
||||
async (value) => {
|
||||
debugger
|
||||
|
||||
if (value.code == 0) {
|
||||
message.error(value.message)
|
||||
return
|
||||
@@ -486,7 +486,7 @@ export default defineComponent({
|
||||
})
|
||||
// 提交处理任务,默认处理文件夹下面的所有的PNG图片
|
||||
await window.img.BatchProcessImage('tmp/input_crop', (value) => {
|
||||
debugger
|
||||
|
||||
// 不管返回什么,这边都关掉
|
||||
setTimeout(() => {
|
||||
if (dp) {
|
||||
@@ -496,6 +496,7 @@ export default defineComponent({
|
||||
|
||||
if (value.code == 0) {
|
||||
message.error(value.message)
|
||||
window.api.showGlobalMessageDialog(value)
|
||||
return
|
||||
}
|
||||
window.api.showGlobalMessageDialog(value)
|
||||
|
||||
@@ -3,6 +3,8 @@ import { createRouter, createWebHashHistory } from 'vue-router';
|
||||
import App from './App.vue'
|
||||
import { Home } from '@vicons/ionicons5';
|
||||
const app = createApp(App);
|
||||
import { createPinia } from 'pinia'
|
||||
const pinia = createPinia()
|
||||
|
||||
const routes = [
|
||||
{
|
||||
@@ -33,5 +35,6 @@ const router = createRouter({
|
||||
routes
|
||||
})
|
||||
app.use(router);
|
||||
app.use(pinia)
|
||||
|
||||
app.mount('#app')
|
||||
|
||||
Reference in New Issue
Block a user