diff --git a/dashboard/src/components/folder/BaseFolderItemSelector.vue b/dashboard/src/components/folder/BaseFolderItemSelector.vue
index 8ba37b789..4b4b4f1c4 100644
--- a/dashboard/src/components/folder/BaseFolderItemSelector.vue
+++ b/dashboard/src/components/folder/BaseFolderItemSelector.vue
@@ -119,8 +119,17 @@
- mdi-check-circle
+
+
+ mdi-check-circle
+
@@ -197,6 +206,11 @@ export default defineComponent({
type: Boolean,
default: false
},
+ // 是否显示编辑按钮
+ showEditButton: {
+ type: Boolean,
+ default: false
+ },
// 默认项(如 "默认人格")
defaultItem: {
type: Object as PropType,
@@ -221,7 +235,7 @@ export default defineComponent({
default: null
}
},
- emits: ['update:modelValue', 'navigate', 'create'],
+ emits: ['update:modelValue', 'navigate', 'create', 'edit'],
data() {
return {
dialog: false,
@@ -370,6 +384,17 @@ export default defineComponent({
cancelSelection() {
this.selectedItemId = this.modelValue || '';
this.dialog = false;
+ },
+
+ isDefaultItem(item: SelectableItem): boolean {
+ if (this.defaultItem === null) {
+ return false;
+ }
+ return this.getItemId(item) === this.getItemId(this.defaultItem);
+ },
+
+ handleEditItem(item: SelectableItem) {
+ this.$emit('edit', item);
}
}
});
diff --git a/dashboard/src/components/folder/types.ts b/dashboard/src/components/folder/types.ts
index 6fbeb39c7..13b636fc2 100644
--- a/dashboard/src/components/folder/types.ts
+++ b/dashboard/src/components/folder/types.ts
@@ -241,6 +241,7 @@ export interface FolderItemSelectorLabels {
// 按钮
createButton?: string;
+ editButton?: string;
confirmButton?: string;
cancelButton?: string;
diff --git a/dashboard/src/components/shared/PersonaSelector.vue b/dashboard/src/components/shared/PersonaSelector.vue
index 393704f4c..a77f27640 100644
--- a/dashboard/src/components/shared/PersonaSelector.vue
+++ b/dashboard/src/components/shared/PersonaSelector.vue
@@ -8,6 +8,7 @@
:items-loading="itemsLoading"
:labels="labels"
:show-create-button="true"
+ :show-edit-button="true"
:default-item="defaultPersona"
item-id-field="persona_id"
item-name-field="persona_id"
@@ -15,15 +16,16 @@
:display-value-formatter="formatDisplayValue"
@navigate="handleNavigate"
@create="openCreatePersona"
+ @edit="openEditPersona"
/>
-
+
@@ -62,7 +64,8 @@ const folderTree = ref([])
const currentPersonas = ref([])
const treeLoading = ref(false)
const itemsLoading = ref(false)
-const showCreateDialog = ref(false)
+const showPersonaDialog = ref(false)
+const editingPersona = ref(null)
const currentFolderId = ref(null)
// 默认人格
@@ -104,6 +107,7 @@ const labels = computed(() => ({
defaultItem: tm('personaSelector.defaultPersona'),
noDescription: tm('personaSelector.noDescription'),
createButton: tm('personaSelector.createPersona'),
+ editButton: tm('personaSelector.editPersona') || 'Edit',
confirmButton: t('core.common.confirm'),
cancelButton: t('core.common.cancel'),
rootFolder: tm('personaSelector.rootFolder') || '全部人格',
@@ -171,13 +175,21 @@ async function handleNavigate(folderId: string | null) {
// 打开创建人格对话框
function openCreatePersona() {
- showCreateDialog.value = true
+ editingPersona.value = null
+ showPersonaDialog.value = true
}
-// 人格创建成功
-async function handlePersonaCreated(message: string) {
- console.log('人格创建成功:', message)
- showCreateDialog.value = false
+// 打开编辑人格对话框
+function openEditPersona(persona: Persona) {
+ editingPersona.value = persona
+ showPersonaDialog.value = true
+}
+
+// 人格保存成功(创建或编辑)
+async function handlePersonaSaved(message: string) {
+ console.log('人格保存成功:', message)
+ showPersonaDialog.value = false
+ editingPersona.value = null
// 刷新当前文件夹的人格列表
await loadPersonasInFolder(currentFolderId.value)
}