From 7020672e574510cc91cc134278b1e998b97b7380 Mon Sep 17 00:00:00 2001 From: Kven <2955163637@qq.com> Date: Sun, 4 May 2025 18:45:03 +0800 Subject: [PATCH] =?UTF-8?q?feat(@vben/web-antd):=20=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E8=81=8A=E5=A4=A9=E6=B5=81=E5=92=8C=E6=95=B0=E6=8D=AE=E6=8A=93?= =?UTF-8?q?=E5=8F=96=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 添加聊天流 API 和相关组件,实现 PPT 模板生成工具界面 - 新增数据抓取工具列表和抓取功能 - 优化模板选择和会话管理逻辑 - 实现消息列表和输入框功能 - 添加文件上传和下载支持 --- apps/web-antd/package.json | 3 + apps/web-antd/src/api/core/chatflow.ts | 52 ++ apps/web-antd/src/api/core/index.ts | 4 + apps/web-antd/src/api/core/server.ts | 40 ++ apps/web-antd/src/api/core/workflow.ts | 39 ++ apps/web-antd/src/views/ppt/index.vue | 628 +++++++++++++++++++++- apps/web-antd/src/views/spider/index.vue | 226 +++++++- apps/web-antd/src/views/word/index.vue | 648 ++++++++++++++++++++++- apps/web-antd/vite.config.mts | 14 + pnpm-lock.yaml | 39 ++ vben-admin.code-workspace | 20 - 11 files changed, 1611 insertions(+), 102 deletions(-) create mode 100644 apps/web-antd/src/api/core/chatflow.ts create mode 100644 apps/web-antd/src/api/core/server.ts create mode 100644 apps/web-antd/src/api/core/workflow.ts diff --git a/apps/web-antd/package.json b/apps/web-antd/package.json index 9460d92..0b46baa 100644 --- a/apps/web-antd/package.json +++ b/apps/web-antd/package.json @@ -26,6 +26,7 @@ "#/*": "./src/*" }, "dependencies": { + "@ant-design/icons-vue": "^7.0.1", "@vben/access": "workspace:*", "@vben/common-ui": "workspace:*", "@vben/constants": "workspace:*", @@ -40,6 +41,8 @@ "@vben/styles": "workspace:*", "@vben/types": "workspace:*", "@vben/utils": "workspace:*", + "@vue-office/docx": "^1.6.3", + "@vue-office/pptx": "^1.0.1", "@vueuse/core": "catalog:", "ant-design-vue": "catalog:", "ant-design-x-vue": "^1.1.2", diff --git a/apps/web-antd/src/api/core/chatflow.ts b/apps/web-antd/src/api/core/chatflow.ts new file mode 100644 index 0000000..a5112bd --- /dev/null +++ b/apps/web-antd/src/api/core/chatflow.ts @@ -0,0 +1,52 @@ +import { requestClient } from '#/api/request'; + +export namespace ChatflowApi { + export interface ChatParams { + appid: string; + } + + export interface CompletionsBody { + userId: string; + conversationId: string; + content: string; + inputs: { + [key: string]: any; + }; + files: []; + } + + export interface ChatListBody { + userId: string; + lastId: string; + sortBy: string; + limit: string; + content?: string | undefined; + } +} + +// 聊天流 +export function sendChatflow( + params: ChatflowApi.ChatParams, + data: ChatflowApi.CompletionsBody, +) { + return requestClient.post(`/v1/chat/completions/${params.appid}`, data); +} + +export function getChatList( + params: ChatflowApi.ChatParams, + data: ChatflowApi.ChatListBody, +) { + return requestClient.post(`/v1/chat/conversations/${params.appid}`, data); +} + +// export function stopChatflow(data){ +// return requestClient.post('/v1/chat/stopMessagesStream', data); +// }; +// +// export function getChatflowList(data){ +// return requestClient.post('/v1/chat/messages', data); +// }; +// +// export function deleteChatflow(data){ +// return requestClient.delete('/v1/chat/messages/suggested', data); +// }; diff --git a/apps/web-antd/src/api/core/index.ts b/apps/web-antd/src/api/core/index.ts index 28a5aef..ea85526 100644 --- a/apps/web-antd/src/api/core/index.ts +++ b/apps/web-antd/src/api/core/index.ts @@ -1,3 +1,7 @@ export * from './auth'; +export * from './chatflow'; export * from './menu'; +export * from './repository'; +export * from './server'; export * from './user'; +export * from './workflow'; diff --git a/apps/web-antd/src/api/core/server.ts b/apps/web-antd/src/api/core/server.ts new file mode 100644 index 0000000..7d7520c --- /dev/null +++ b/apps/web-antd/src/api/core/server.ts @@ -0,0 +1,40 @@ +import { requestClient } from '#/api/request'; + +export namespace RepositoryApi { + export interface AppListParams { + mode?: string; + name?: string; + } +} + +export const getAppList = (params: RepositoryApi.AppListParams) => { + return requestClient.get(`/v1/server/apps`, { params }); +}; + +// export const getAppDetail = (id) => { +// return requestClient.get(`/v1/server/${id}`) +// } +// +// export const getAppKey = (id) => { +// return requestClient.get(`/v1/server/api-key/${id}`) +// } +// +// export const initAppKey = (id) => { +// return requestClient.post(`/v1/server/api-key/init/${id}`) +// } +// +// export const getRepositoryKey = (data) => { +// return requestClient.get(`/v1/server/api-key/dataset`) +// } +// +// export const initRepositoryKey = (data) => { +// return requestClient.post(`/v1/server/api-key/dataset/init`) +// } +// +// export const getAbleList = (data) => { +// return requestClient.get(`/v1/server/apps/able`) +// }; +// +// export const toggleAble = (id) => { +// return requestClient.get(`/v1/server/app/${id}`) +// }; diff --git a/apps/web-antd/src/api/core/workflow.ts b/apps/web-antd/src/api/core/workflow.ts new file mode 100644 index 0000000..72c2ca0 --- /dev/null +++ b/apps/web-antd/src/api/core/workflow.ts @@ -0,0 +1,39 @@ +import { requestClient } from '#/api/request'; + +export namespace WorkflowApi { + export interface WorkflowParams { + appid: string; + } + export interface WorkflowRunBody { + conversationId: string; + userId: string; + inputs: { + [key: string]: any; + }; + files: []; + } +} + +// 工作流 +export function sendWorkflow( + params: WorkflowApi.WorkflowParams, + data: WorkflowApi.WorkflowRunBody, +) { + return requestClient.post(`/v1/workflow/run/${params.appid}`, data); +} + +// export function runWorkflow(data){ +// return requestClient.post('/v1/workflow/run/stream', data); +// }; +// +// export function stopWorkflow(data){ +// return requestClient.patch('/v1/workflow/stop', { data }); +// }; +// +// export function getWorkflowMessage(data){ +// return requestClient.get('/v1/workflow/info', { data }); +// }; +// +// export function getWorkflowLog(data){ +// return requestClient.get('/v1/workflow/logs', { data }); +// }; diff --git a/apps/web-antd/src/views/ppt/index.vue b/apps/web-antd/src/views/ppt/index.vue index 2259c64..4d797de 100644 --- a/apps/web-antd/src/views/ppt/index.vue +++ b/apps/web-antd/src/views/ppt/index.vue @@ -1,41 +1,615 @@ - diff --git a/apps/web-antd/src/views/spider/index.vue b/apps/web-antd/src/views/spider/index.vue index 2259c64..ddbc61c 100644 --- a/apps/web-antd/src/views/spider/index.vue +++ b/apps/web-antd/src/views/spider/index.vue @@ -1,41 +1,211 @@ - diff --git a/apps/web-antd/src/views/word/index.vue b/apps/web-antd/src/views/word/index.vue index 2259c64..8bd564c 100644 --- a/apps/web-antd/src/views/word/index.vue +++ b/apps/web-antd/src/views/word/index.vue @@ -1,41 +1,635 @@ - diff --git a/apps/web-antd/vite.config.mts b/apps/web-antd/vite.config.mts index 15ad1df..cfcfdc3 100644 --- a/apps/web-antd/vite.config.mts +++ b/apps/web-antd/vite.config.mts @@ -13,6 +13,20 @@ export default defineConfig(async () => { target: 'http://localhost:8081/api', ws: true, }, + '/v1': { + target: 'http://localhost:8081/v1', + rewrite: (path) => path.replace(/^\/v1/, ''), + changeOrigin: true, + ws: true, + }, + '/static/*.pptx': { + target: 'http://47.112.173.8:6802', + changeOrigin: true, + }, + '/static/*.docx': { + target: 'http://47.112.173.8:6805', + changeOrigin: true, + }, }, }, }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ccfb674..960d53f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -595,6 +595,9 @@ importers: apps/web-antd: dependencies: + '@ant-design/icons-vue': + specifier: ^7.0.1 + version: 7.0.1(vue@3.5.13(typescript@5.8.3)) '@vben/access': specifier: workspace:* version: link:../../packages/effects/access @@ -637,6 +640,12 @@ importers: '@vben/utils': specifier: workspace:* version: link:../../packages/utils + '@vue-office/docx': + specifier: ^1.6.3 + version: 1.6.3(vue-demi@0.14.10(vue@3.5.13(typescript@5.8.3)))(vue@3.5.13(typescript@5.8.3)) + '@vue-office/pptx': + specifier: ^1.0.1 + version: 1.0.1(vue-demi@0.14.10(vue@3.5.13(typescript@5.8.3)))(vue@3.5.13(typescript@5.8.3)) '@vueuse/core': specifier: 'catalog:' version: 13.1.0(vue@3.5.13(typescript@5.8.3)) @@ -4170,6 +4179,26 @@ packages: '@volar/typescript@2.4.13': resolution: {integrity: sha512-Ukz4xv84swJPupZeoFsQoeJEOm7U9pqsEnaGGgt5ni3SCTa22m8oJP5Nng3Wed7Uw5RBELdLxxORX8YhJPyOgQ==} + '@vue-office/docx@1.6.3': + resolution: {integrity: sha512-Cs+3CAaRBOWOiW4XAhTwwxJ0dy8cPIf6DqfNvYcD3YACiLwO4kuawLF2IAXxyijhbuOeoFsfvoVbOc16A/4bZA==} + peerDependencies: + '@vue/composition-api': ^1.7.1 + vue: ^3.5.13 + vue-demi: ^0.14.6 + peerDependenciesMeta: + '@vue/composition-api': + optional: true + + '@vue-office/pptx@1.0.1': + resolution: {integrity: sha512-+V7Kctzl6f6+Yk4NaD/wQGRIkqLWcowe0jEhPexWQb8Oilbzt1OyhWRWcMsxNDTdrgm6aMLP+0/tmw27cxddMg==} + peerDependencies: + '@vue/composition-api': ^1.7.1 + vue: ^3.5.13 + vue-demi: ^0.14.6 + peerDependenciesMeta: + '@vue/composition-api': + optional: true + '@vue/babel-helper-vue-transform-on@1.4.0': resolution: {integrity: sha512-mCokbouEQ/ocRce/FpKCRItGo+013tHg7tixg3DUNS+6bmIchPt66012kBMm476vyEIJPafrvOf4E5OYj3shSw==} @@ -13076,6 +13105,16 @@ snapshots: path-browserify: 1.0.1 vscode-uri: 3.1.0 + '@vue-office/docx@1.6.3(vue-demi@0.14.10(vue@3.5.13(typescript@5.8.3)))(vue@3.5.13(typescript@5.8.3))': + dependencies: + vue: 3.5.13(typescript@5.8.3) + vue-demi: 0.14.10(vue@3.5.13(typescript@5.8.3)) + + '@vue-office/pptx@1.0.1(vue-demi@0.14.10(vue@3.5.13(typescript@5.8.3)))(vue@3.5.13(typescript@5.8.3))': + dependencies: + vue: 3.5.13(typescript@5.8.3) + vue-demi: 0.14.10(vue@3.5.13(typescript@5.8.3)) + '@vue/babel-helper-vue-transform-on@1.4.0': {} '@vue/babel-plugin-jsx@1.4.0(@babel/core@7.26.10)': diff --git a/vben-admin.code-workspace b/vben-admin.code-workspace index aa8205b..b1e7f80 100644 --- a/vben-admin.code-workspace +++ b/vben-admin.code-workspace @@ -1,25 +1,9 @@ { "folders": [ - { - "name": "@vben/backend-mock", - "path": "apps/backend-mock", - }, { "name": "@vben/web-antd", "path": "apps/web-antd", }, - { - "name": "@vben/web-ele", - "path": "apps/web-ele", - }, - { - "name": "@vben/web-naive", - "path": "apps/web-naive", - }, - { - "name": "@vben/docs", - "path": "docs", - }, { "name": "@vben/commitlint-config", "path": "internal/lint-configs/commitlint-config", @@ -156,10 +140,6 @@ "name": "@vben/utils", "path": "packages/utils", }, - { - "name": "@vben/playground", - "path": "playground", - }, { "name": "@vben/turbo-run", "path": "scripts/turbo-run",