|
@@ -2,7 +2,7 @@
|
2
|
2
|
* @Author: ysh
|
3
|
3
|
* @Date: 2025-07-17 18:16:50
|
4
|
4
|
* @LastEditors: Please set LastEditors
|
5
|
|
- * @LastEditTime: 2025-07-22 10:01:21
|
|
5
|
+ * @LastEditTime: 2025-07-25 15:30:21
|
6
|
6
|
-->
|
7
|
7
|
<template>
|
8
|
8
|
<div class="agent-container">
|
|
@@ -10,7 +10,7 @@
|
10
|
10
|
<div class="agent-list">
|
11
|
11
|
<div class="list-header">
|
12
|
12
|
<h3>智能体列表</h3>
|
13
|
|
- <el-button type="primary" size="small" @click="handleAdd">
|
|
13
|
+ <el-button type="primary" size="small" @click="openAddDialog">
|
14
|
14
|
<el-icon>
|
15
|
15
|
<Plus />
|
16
|
16
|
</el-icon>
|
|
@@ -61,7 +61,7 @@
|
61
|
61
|
<!-- 空状态 -->
|
62
|
62
|
<div v-if="agentList.length === 0 && !loading" class="empty-state">
|
63
|
63
|
<el-empty description="暂无智能体数据">
|
64
|
|
- <el-button type="primary" @click="handleAdd">创建智能体</el-button>
|
|
64
|
+ <el-button type="primary" @click="dialogVisible = true">创建智能体</el-button>
|
65
|
65
|
</el-empty>
|
66
|
66
|
</div>
|
67
|
67
|
</div>
|
|
@@ -93,20 +93,46 @@
|
93
|
93
|
</div>
|
94
|
94
|
</div>
|
95
|
95
|
</div>
|
|
96
|
+
|
|
97
|
+ <el-dialog v-model="dialogVisible" :title="isEdit ? '编辑智能体' : '新增智能体'" width="30%" @close="resetForm">
|
|
98
|
+ <el-form :model="form" :rules="rules" label-width="120px">
|
|
99
|
+ <el-form-item label="智能体名称" prop="agentName">
|
|
100
|
+ <el-input v-model="form.agentName" placeholder="请输入智能体名称" />
|
|
101
|
+ </el-form-item>
|
|
102
|
+ <el-form-item label="智能体描述" prop="description">
|
|
103
|
+ <el-input type="textarea" v-model="form.description" placeholder="请输入智能体描述" />
|
|
104
|
+ </el-form-item>
|
|
105
|
+ </el-form>
|
|
106
|
+ <template #footer>
|
|
107
|
+ <el-button @click="() => { dialogVisible = false; resetForm(); }">取消</el-button>
|
|
108
|
+ <el-button type="primary" @click="handleSubmit">{{ isEdit ? '保存' : '确定' }}</el-button>
|
|
109
|
+ </template>
|
|
110
|
+ </el-dialog>
|
96
|
111
|
</div>
|
97
|
112
|
</template>
|
98
|
113
|
|
99
|
114
|
<script setup>
|
100
|
115
|
import { ref, reactive, onMounted } from 'vue'
|
101
|
116
|
import { ElMessage, ElMessageBox } from 'element-plus'
|
102
|
|
-import { Plus, Search, More, Document, Select } from '@element-plus/icons-vue'
|
103
|
117
|
import { listAgent, addAgent, updateAgent, delAgent } from '@/api/llm/agent'
|
|
118
|
+import { opening } from '@/api/llm/mcp'
|
104
|
119
|
|
105
|
120
|
// 响应式数据
|
106
|
121
|
const loading = ref(false)
|
107
|
122
|
const agentList = ref([])
|
108
|
123
|
const total = ref(0)
|
109
|
124
|
const selectedAgentId = ref(null)
|
|
125
|
+const dialogVisible = ref(false)
|
|
126
|
+const form = reactive({
|
|
127
|
+ agentName: '',
|
|
128
|
+ description: ''
|
|
129
|
+})
|
|
130
|
+const rules = reactive({
|
|
131
|
+ agentName: [{ required: true, message: '请输入智能体名称', trigger: 'blur' }],
|
|
132
|
+ description: [{ required: true, message: '请输入智能体描述', trigger: 'blur' }]
|
|
133
|
+})
|
|
134
|
+const isEdit = ref(false)
|
|
135
|
+const editAgentId = ref(null)
|
110
|
136
|
|
111
|
137
|
// 查询参数
|
112
|
138
|
const queryParams = reactive({
|
|
@@ -140,12 +166,43 @@ const handleQuery = () => {
|
140
|
166
|
const selectAgent = (agent) => {
|
141
|
167
|
selectedAgentId.value = agent.agentId
|
142
|
168
|
console.log('选中智能体:', agent)
|
|
169
|
+ opening(agent.agentName).then(res => {
|
|
170
|
+ console.log('开场白:', res.resultContent)
|
|
171
|
+ })
|
|
172
|
+}
|
|
173
|
+
|
|
174
|
+const resetForm = () => {
|
|
175
|
+ isEdit.value = false
|
|
176
|
+ editAgentId.value = null
|
|
177
|
+ form.agentName = ''
|
|
178
|
+ form.description = ''
|
143
|
179
|
}
|
144
|
180
|
|
145
|
|
-// 新增智能体
|
146
|
|
-const handleAdd = () => {
|
147
|
|
- ElMessage.info('新增智能体功能待实现')
|
148
|
|
- // TODO: 打开新增对话框
|
|
181
|
+const openAddDialog = () => {
|
|
182
|
+ resetForm()
|
|
183
|
+ dialogVisible.value = true
|
|
184
|
+}
|
|
185
|
+
|
|
186
|
+const handleSubmit = () => {
|
|
187
|
+ if (isEdit.value) {
|
|
188
|
+ updateAgent({ agentId: editAgentId.value, ...form }).then(res => {
|
|
189
|
+ if (res.code === 200) {
|
|
190
|
+ ElMessage.success('编辑成功')
|
|
191
|
+ dialogVisible.value = false
|
|
192
|
+ isEdit.value = false
|
|
193
|
+ editAgentId.value = null
|
|
194
|
+ getList()
|
|
195
|
+ }
|
|
196
|
+ })
|
|
197
|
+ } else {
|
|
198
|
+ addAgent(form).then(res => {
|
|
199
|
+ if (res.code === 200) {
|
|
200
|
+ ElMessage.success('新增成功')
|
|
201
|
+ dialogVisible.value = false
|
|
202
|
+ getList()
|
|
203
|
+ }
|
|
204
|
+ })
|
|
205
|
+ }
|
149
|
206
|
}
|
150
|
207
|
|
151
|
208
|
// 操作菜单处理
|
|
@@ -153,8 +210,11 @@ const handleCommand = async (command) => {
|
153
|
210
|
const { action, agent } = command
|
154
|
211
|
|
155
|
212
|
if (action === 'edit') {
|
156
|
|
- ElMessage.info('编辑智能体功能待实现')
|
157
|
|
- // TODO: 打开编辑对话框
|
|
213
|
+ isEdit.value = true
|
|
214
|
+ editAgentId.value = agent.agentId
|
|
215
|
+ form.agentName = agent.agentName
|
|
216
|
+ form.description = agent.description
|
|
217
|
+ dialogVisible.value = true
|
158
|
218
|
} else if (action === 'delete') {
|
159
|
219
|
try {
|
160
|
220
|
await ElMessageBox.confirm(
|