编辑提示词 dialog

This commit is contained in:
lyc 2024-11-14 11:17:52 +08:00
parent 39efd18bc6
commit 18495d0811
3 changed files with 90 additions and 52 deletions

View File

@ -20,7 +20,7 @@
</template>
</el-dropdown>
<div>
<el-button type="primary" link @click="keywordDialog = true">
<el-button type="primary" link @click="wordDialog = true">
<el-icon>
<Plus />
</el-icon>
@ -31,35 +31,7 @@
</div>
</div>
</div>
<el-dialog v-model="keywordDialog" :show-close="false" width="600">
<template #header>
<div class="custom-header flex">
<span>添加提示词</span>
<i class="iconfont icon-guanbi" @click="isDialog = false"></i>
</div>
</template>
<div class="dialog-content">
<el-form :model="form" label-width="auto">
<el-form-item label="名称">
<el-input v-model="form.name" />
</el-form-item>
<el-form-item label="提示词">
<el-input v-model="form.desc" type="textarea" />
</el-form-item>
</el-form>
</div>
<template #footer>
<div class="dialog-footer">
<el-button @click="keywordDialog = false">取消</el-button>
<el-button type="primary" @click="keywordDialog = false">
确定
</el-button>
</div>
</template>
</el-dialog>
<keywordDialog v-model="wordDialog"/>
<Dialog v-model="showDialog" :modeType="type" />
</template>
@ -69,8 +41,9 @@ import { Plus } from '@element-plus/icons-vue'
import { ElMessageBox } from 'element-plus'
import { modelList } from '@/api/mode/index'
import Dialog from './dialog.vue'
import keywordDialog from './keyword-dialog.vue'
const keywordDialog = ref(false)
const wordDialog = ref(false)
const props = defineProps({
type: {
type: Number,
@ -120,13 +93,6 @@ const changeTemplate = (val) => {
})
}
const form = reactive({
name: '',
desc: '',
})
onMounted(() => {
getTemplateList()
})
@ -143,8 +109,6 @@ onMounted(() => {
width: 50%;
align-items: center;
padding-left: 20px;
}
.header-right {
@ -160,13 +124,4 @@ onMounted(() => {
}
}
.custom-header {
justify-content: space-between;
align-items: center;
.icon-guanbi {
cursor: pointer;
font-weight: bold;
}
}
</style>

View File

@ -0,0 +1,72 @@
<template>
<el-dialog v-model="mode" :show-close="false" width="600">
<template #header>
<div class="custom-header flex">
<span>{{ isAdd ? '添加' : '编辑' }}提示词</span>
<i class="iconfont icon-guanbi" @click="mode = false"></i>
</div>
</template>
<div class="dialog-content">
<el-form :model="form" label-width="auto">
<el-form-item label="名称">
<el-input v-model="form.name" />
</el-form-item>
<el-form-item label="提示词">
<el-input v-model="form.prompt" type="textarea" />
</el-form-item>
</el-form>
</div>
<template #footer>
<div class="dialog-footer">
<el-button @click="mode = false">取消</el-button>
<el-button type="primary" @click="mode = false">
确定
</el-button>
</div>
</template>
</el-dialog>
</template>
<script setup>
import { reactive, watch } from 'vue'
const mode = defineModel()
const props = defineProps({
isAdd: {
type: Boolean,
default: true
},
item: {
type: Object
}
})
const form = reactive({
name: '',
prompt: '',
})
watch(() => props.isAdd, (newVal) => {
if (!newVal) {
console.log(props.item)
form.name = props.item.name
form.prompt = props.item.prompt
}
}, { immediate: true })
</script>
<style lang="scss" scoped>
.custom-header {
justify-content: space-between;
align-items: center;
.icon-guanbi {
cursor: pointer;
font-weight: bold;
}
}
</style>

View File

@ -16,7 +16,7 @@
<i class="iconfont icon-shenglvehao"></i></el-button>
</template>
<template #default>
<el-button type="primary" link>编辑</el-button>
<el-button type="primary" link @click="editKeyWord(item)">编辑</el-button>
<el-button type="primary" link>移除</el-button>
</template>
</el-popover>
@ -54,6 +54,8 @@
<EditDialog v-model="isEdit" :item="editItem" @saveEdit="saveEdit" />
<!--AI 对话调整-->
<AdjustDialog v-model="isAdjust" :item="editItem" @saveAdjust="saveAdjust" />
<!--编辑提示词-->
<keywordDialog v-model="isEditKeyWord" :isAdd="false" :item="keywordItem"/>
</div>
</template>
@ -61,6 +63,7 @@
import { ref, reactive, onMounted, watch } from 'vue';
import EditDialog from './edit-dialog.vue'
import AdjustDialog from './adjust-dialog.vue'
import keywordDialog from './keyword-dialog.vue';
import { sessionStore } from '@/utils/store'
import useUserStore from '@/store/modules/user'
import { conversation, completion, modelList } from '@/api/mode/index'
@ -194,10 +197,19 @@ const saveAdjust = (item) => {
childTempList.value[curIndex.value].answer = answer
}
//
const keywordItem = reactive({})
const isEditKeyWord = ref(false)
const editKeyWord = (item) =>{
isEditKeyWord.value = true
Object.assign(keywordItem, item)
}
onMounted(() => {
let data = sessionStore.get('subject.curNode')
Object.assign(curNode, data);
})
defineExpose({
@ -414,7 +426,6 @@ defineExpose({
padding-left: 25px;
}
</style>
<style>
.template-custom-popover {