Skip to content

Commit 7c73b80

Browse files
committed
【功能新增】AI 大模型:支持思维导图的管理
1 parent 5ba69ba commit 7c73b80

File tree

2 files changed

+185
-0
lines changed

2 files changed

+185
-0
lines changed

src/api/ai/mindmap/index.ts

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,20 @@
11
import { getAccessToken } from '@/utils/auth'
22
import { fetchEventSource } from '@microsoft/fetch-event-source'
33
import { config } from '@/config/axios/config'
4+
import request from '@/config/axios'
45

6+
// AI 思维导图 VO
7+
export interface MindMapVO {
8+
id: number // 编号
9+
userId: number // 用户编号
10+
prompt: string // 生成内容提示
11+
generatedContent: string // 生成的思维导图内容
12+
platform: string // 平台
13+
model: string // 模型
14+
errorMessage: string // 错误信息
15+
}
16+
17+
// AI 思维导图生成 VO
518
export interface AiMindMapGenerateReqVO {
619
prompt: string
720
}
@@ -34,5 +47,14 @@ export const AiMindMapApi = {
3447
onclose: onClose,
3548
signal: ctrl.signal
3649
})
50+
},
51+
52+
// 查询思维导图分页
53+
getMindMapPage: async (params: any) => {
54+
return await request.get({ url: `/ai/mind-map/page`, params })
55+
},
56+
// 删除思维导图
57+
deleteMindMap: async (id: number) => {
58+
return await request.delete({ url: `/ai/mind-map/delete?id=` + id })
3759
}
3860
}
Lines changed: 163 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,163 @@
1+
<template>
2+
<ContentWrap>
3+
<!-- 搜索工作栏 -->
4+
<el-form
5+
class="-mb-15px"
6+
:model="queryParams"
7+
ref="queryFormRef"
8+
:inline="true"
9+
label-width="68px"
10+
>
11+
<el-form-item label="用户编号" prop="userId">
12+
<el-select
13+
v-model="queryParams.userId"
14+
clearable
15+
placeholder="请输入用户编号"
16+
class="!w-240px"
17+
>
18+
<el-option
19+
v-for="item in userList"
20+
:key="item.id"
21+
:label="item.nickname"
22+
:value="item.id"
23+
/>
24+
</el-select>
25+
</el-form-item>
26+
<el-form-item label="提示词" prop="prompt">
27+
<el-input
28+
v-model="queryParams.prompt"
29+
placeholder="请输入提示词"
30+
clearable
31+
@keyup.enter="handleQuery"
32+
class="!w-240px"
33+
/>
34+
</el-form-item>
35+
<el-form-item label="创建时间" prop="createTime">
36+
<el-date-picker
37+
v-model="queryParams.createTime"
38+
value-format="YYYY-MM-DD HH:mm:ss"
39+
type="daterange"
40+
start-placeholder="开始日期"
41+
end-placeholder="结束日期"
42+
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
43+
class="!w-220px"
44+
/>
45+
</el-form-item>
46+
<el-form-item>
47+
<el-button @click="handleQuery"><Icon icon="ep:search" class="mr-5px" /> 搜索</el-button>
48+
<el-button @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" /> 重置</el-button>
49+
</el-form-item>
50+
</el-form>
51+
</ContentWrap>
52+
53+
<!-- 列表 -->
54+
<ContentWrap>
55+
<el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true">
56+
<el-table-column label="编号" align="center" prop="id" width="180" fixed="left" />
57+
<el-table-column label="用户" align="center" prop="userId" width="180">
58+
<template #default="scope">
59+
<span>{{ userList.find((item) => item.id === scope.row.userId)?.nickname }}</span>
60+
</template>
61+
</el-table-column>
62+
<el-table-column label="提示词" align="center" prop="prompt" width="180" />
63+
<el-table-column label="思维导图" align="center" prop="generatedContent" min-width="300" />
64+
<el-table-column label="模型" align="center" prop="model" width="180" />
65+
<el-table-column
66+
label="创建时间"
67+
align="center"
68+
prop="createTime"
69+
:formatter="dateFormatter"
70+
width="180px"
71+
/>
72+
<el-table-column label="错误信息" align="center" prop="errorMessage" />
73+
<el-table-column label="操作" align="center" width="100" fixed="right">
74+
<template #default="scope">
75+
<el-button
76+
link
77+
type="danger"
78+
@click="handleDelete(scope.row.id)"
79+
v-hasPermi="['ai:mind-map:delete']"
80+
>
81+
删除
82+
</el-button>
83+
</template>
84+
</el-table-column>
85+
</el-table>
86+
<!-- 分页 -->
87+
<Pagination
88+
:total="total"
89+
v-model:page="queryParams.pageNo"
90+
v-model:limit="queryParams.pageSize"
91+
@pagination="getList"
92+
/>
93+
</ContentWrap>
94+
</template>
95+
96+
<script setup lang="ts">
97+
import { dateFormatter } from '@/utils/formatTime'
98+
import { AiMindMapApi, MindMapVO } from '@/api/ai/mindmap'
99+
import * as UserApi from '@/api/system/user'
100+
101+
/** AI 思维导图 列表 */
102+
defineOptions({ name: 'AiMindMapManager' })
103+
104+
const message = useMessage() // 消息弹窗
105+
const { t } = useI18n() // 国际化
106+
107+
const loading = ref(true) // 列表的加载中
108+
const list = ref<MindMapVO[]>([]) // 列表的数据
109+
const total = ref(0) // 列表的总页数
110+
const queryParams = reactive({
111+
pageNo: 1,
112+
pageSize: 10,
113+
userId: undefined,
114+
prompt: undefined,
115+
createTime: []
116+
})
117+
const queryFormRef = ref() // 搜索的表单
118+
const userList = ref<UserApi.UserVO[]>([]) // 用户列表
119+
120+
/** 查询列表 */
121+
const getList = async () => {
122+
loading.value = true
123+
try {
124+
const data = await AiMindMapApi.getMindMapPage(queryParams)
125+
list.value = data.list
126+
total.value = data.total
127+
} finally {
128+
loading.value = false
129+
}
130+
}
131+
132+
/** 搜索按钮操作 */
133+
const handleQuery = () => {
134+
queryParams.pageNo = 1
135+
getList()
136+
}
137+
138+
/** 重置按钮操作 */
139+
const resetQuery = () => {
140+
queryFormRef.value.resetFields()
141+
handleQuery()
142+
}
143+
144+
/** 删除按钮操作 */
145+
const handleDelete = async (id: number) => {
146+
try {
147+
// 删除的二次确认
148+
await message.delConfirm()
149+
// 发起删除
150+
await AiMindMapApi.deleteMindMap(id)
151+
message.success(t('common.delSuccess'))
152+
// 刷新列表
153+
await getList()
154+
} catch {}
155+
}
156+
157+
/** 初始化 **/
158+
onMounted(async () => {
159+
getList()
160+
// 获得用户列表
161+
userList.value = await UserApi.getSimpleUserList()
162+
})
163+
</script>

0 commit comments

Comments
 (0)