diff --git a/src/apis/bussiness/bussiness.ts b/src/apis/bussiness/bussiness.ts index eb07866..bf87377 100644 --- a/src/apis/bussiness/bussiness.ts +++ b/src/apis/bussiness/bussiness.ts @@ -44,6 +44,18 @@ export function getFilesApi(folderId: string) { }) } +// 获取文件夹列表 +export function getFolderListApi(params: { page: number; pageSize: number; folderName?: string }) { + return request<{ + list: KnowledgeFolder[] + total: number + }>({ + url: '/knowledge/folder-list', + method: 'get', + params, + }) +} + // 创建文件夹 export function createFolderApi(data: { name: string; parentId?: string }) { return request({ @@ -102,17 +114,16 @@ export function uploadFileApi(data: FormData) { // 更新文件名 export function updateFileNameApi(fileId: string, newName: string) { return request({ - url: `/knowledge/update-filename/${fileId}`, + url: `/knowledge/update-file-name/${fileId}`, method: 'put', - data: { newName }, + data: { name: newName }, }) } // 预览文件 export function previewFileApi(fileId: string) { - return request({ + return request({ url: `/knowledge/preview/${fileId}`, method: 'get', - responseType: 'blob', }) } diff --git a/src/apis/bussiness/index.ts b/src/apis/bussiness/index.ts new file mode 100644 index 0000000..8974f74 --- /dev/null +++ b/src/apis/bussiness/index.ts @@ -0,0 +1,165 @@ +// @/apis/bussiness/index.ts - 商务数据库信息模块API +import http from '@/utils/http' +import type { + FolderInfo, + FileInfo, + FolderListParams, + FileListParams, + FolderListResponse, + FileListResponse, + CreateFolderParams, + RenameFolderParams, + DeleteFolderParams, + UploadFileParams, + DownloadFileParams, + DeleteFileParams, + PreviewFileParams, + RenameFileParams +} from './type' + +const { request } = http + +// 导出类型定义 +export type { + FolderInfo, + FileInfo, + FolderListParams, + FileListParams, + FolderListResponse, + FileListResponse, + CreateFolderParams, + RenameFolderParams, + DeleteFolderParams, + UploadFileParams, + DownloadFileParams, + DeleteFileParams, + PreviewFileParams, + RenameFileParams +} + +// 获取文件夹列表(分页) +export function getFolderListApi(params?: FolderListParams) { + return request({ + url: '/businessData/folder/list', + method: 'get', + params: { + page: params?.page || 1, + pageSize: params?.pageSize || 10, + folderName: params?.folderName + } + }) +} + +// 获取文件列表(分页) +export function getFilesApi(params?: FileListParams) { + return request({ + url: '/businessData/file/list', + method: 'get', + params: { + page: params?.page || 1, + pageSize: params?.pageSize || 10, + folderId: params?.folderId || '0' + } + }) +} + +// 创建文件夹 +export function createFolderApi(data: CreateFolderParams) { + return request({ + url: '/businessData/folder/creatFolder', + method: 'post', + data: { + name: data.name, + parentId: data.parentId || '0' + } + }) +} + +// 重命名文件夹 +export function updateFolderApi(folderId: string, newName: string) { + return request({ + url: '/businessData/folder/rename', + method: 'put', + params: { + folderId: folderId, + newName: newName + } + }) +} + +// 删除文件夹 +export function deleteFolderApi(folderId: string) { + return request({ + url: '/businessData/folder/delete', + method: 'delete', + params: { + folderId: folderId + } + }) +} + +// 上传文件 +export function uploadFileApi( + file: File, + folderId: string, + onUploadProgress?: (progressEvent: any) => void, + cancelToken?: any +) { + const formData = new FormData() + formData.append('file', file) + + return request({ + url: '/businessData/file/add', + method: 'post', + params: { + folderId: folderId + }, + data: formData, + onUploadProgress, + cancelToken, + headers: { + 'Content-Type': 'multipart/form-data' + } + }) +} + +// 下载文件 +export function downloadFileApi(fileId: string) { + return request({ + url: '/businessData/file/download', + method: 'get', + params: { + fileId: fileId + }, + responseType: 'blob' + }) +} + +// 删除文件 +export function deleteFileApi(fileId: string) { + return request({ + url: '/businessData/file/delete', + method: 'delete', + params: { + fileId: fileId + } + }) +} + +// 预览文件(后端没有提供预览接口,使用下载接口) +export function previewFileApi(fileId: string) { + return request({ + url: '/businessData/file/download', + method: 'get', + params: { + fileId: fileId + }, + responseType: 'blob' + }) +} + +// 重命名文件(后端没有提供重命名接口,需要先删除再上传) +export function updateFileNameApi(fileId: string, data: RenameFileParams) { + // 注意:后端没有提供文件重命名接口,这里返回一个Promise.reject + return Promise.reject(new Error('后端暂不支持文件重命名功能')) +} \ No newline at end of file diff --git a/src/apis/bussiness/type.ts b/src/apis/bussiness/type.ts new file mode 100644 index 0000000..e41bbeb --- /dev/null +++ b/src/apis/bussiness/type.ts @@ -0,0 +1,95 @@ +/** 文件夹信息接口 */ +export interface FolderInfo { + folderId: string + name: string + parentId: string + createTime?: string + updateTime?: string +} + +/** 文件信息接口 */ +export interface FileInfo { + fileId: string + fileName: string + fileSize: number + fileType: string + folderId: string + createTime?: string + updateTime?: string +} + +/** 文件夹列表查询参数 */ +export interface FolderListParams { + page?: number + pageSize?: number + folderName?: string +} + +/** 文件列表查询参数 */ +export interface FileListParams { + page?: number + pageSize?: number + folderId?: string +} + +/** 文件夹列表响应 */ +export interface FolderListResponse { + data: FolderInfo[] + total: number + current: number + size: number +} + +/** 文件列表响应 */ +export interface FileListResponse { + data: FileInfo[] + total: number + current: number + size: number +} + +/** 创建文件夹请求参数 */ +export interface CreateFolderParams { + name: string + parentId?: string +} + +/** 重命名文件夹请求参数 */ +export interface RenameFolderParams { + folderId: string + newName: string +} + +/** 删除文件夹请求参数 */ +export interface DeleteFolderParams { + folderId: string +} + +/** 上传文件请求参数 */ +export interface UploadFileParams { + file: File + folderId: string + onUploadProgress?: (progressEvent: any) => void + cancelToken?: any +} + +/** 下载文件请求参数 */ +export interface DownloadFileParams { + fileId: string +} + +/** 删除文件请求参数 */ +export interface DeleteFileParams { + fileId: string +} + +/** 预览文件请求参数 */ +export interface PreviewFileParams { + fileId: string +} + +/** 重命名文件请求参数 */ +export interface RenameFileParams { + fileId: string + newName: string +} \ No newline at end of file diff --git a/src/router/route.ts b/src/router/route.ts index fb76aea..1b3cd29 100644 --- a/src/router/route.ts +++ b/src/router/route.ts @@ -737,26 +737,7 @@ export const systemRoutes: RouteRecordRaw[] = [ ], }, - // 添加商务知识库 - { - path: '/bussiness-knowledge', - name: 'bussinesskonwledge', - component: Layout, - redirect: '/bussiness-knowledge/data', - meta: { title: '商务资料知识库', icon: 'message', hidden: false, sort: 6 }, - children: [ - { - path: '/bussiness-konwledge/data', - name: 'bussiness-knowledge', - component: () => import('@/views/bussiness-data/bussiness.vue'), - meta: { - title: '商务数据库信息', - icon: 'info-circle', - hidden: false, - }, - }, - ], - }, + { path: 'project-management/project-implementation/', name: 'Project-Implementation', @@ -1051,6 +1032,26 @@ export const systemRoutes: RouteRecordRaw[] = [ }, // ], // }, + // 商务数据库信息模块 + { + path: '/business-knowledge', + name: 'BusinessKnowledge', + component: Layout, + redirect: '/business-knowledge/data', + meta: { title: '商务数据库信息', icon: 'database', hidden: false, sort: 5.5 }, + children: [ + { + path: '/business-knowledge/data', + name: 'BusinessKnowledgeData', + component: () => import('@/views/bussiness-data/bussiness.vue'), + meta: { + title: '商务数据库信息', + icon: 'info-circle', + hidden: false, + }, + }, + ], + }, { path: '/chat-platform', name: 'ChatPlatform', diff --git a/src/types/auto-imports.d.ts b/src/types/auto-imports.d.ts index 369aad4..eab6be6 100644 --- a/src/types/auto-imports.d.ts +++ b/src/types/auto-imports.d.ts @@ -70,6 +70,6 @@ declare global { // for type re-export declare global { // @ts-ignore - export type { Component, ComponentPublicInstance, ComputedRef, DirectiveBinding, ExtractDefaultPropTypes, ExtractPropTypes, ExtractPublicPropTypes, InjectionKey, PropType, Ref, MaybeRef, MaybeRefOrGetter, VNode, WritableComputedRef } from 'vue' + export type { Component, ComponentPublicInstance, ComputedRef, ExtractDefaultPropTypes, ExtractPropTypes, ExtractPublicPropTypes, InjectionKey, PropType, Ref, VNode, WritableComputedRef } from 'vue' import('vue') } diff --git a/src/views/bussiness-data/bussiness.vue b/src/views/bussiness-data/bussiness.vue index a7385a5..4761ef0 100644 --- a/src/views/bussiness-data/bussiness.vue +++ b/src/views/bussiness-data/bussiness.vue @@ -532,7 +532,7 @@ import { uploadFileApi, updateFileNameApi, previewFileApi -} from '@/apis/bussiness/bussiness' +} from '@/apis/bussiness' // 状态管理 const folderList = ref([]); diff --git a/tsconfig.json b/tsconfig.json index bcd3595..da01396 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,33 +1,27 @@ { + "extends": "@vue/tsconfig/tsconfig.web.json", "compilerOptions": { - // "preserveValueImports": true, // 已废弃,移除 - // "importsNotUsedAsValues": "error", // 已废弃,移除 - "target": "ES2020", - "jsx": "preserve", - "lib": ["ES2020", "DOM"], - "useDefineForClassFields": true, // 合并 web 配置 - "baseUrl": ".", - // 基于 @vue/tsconfig/tsconfig.json - "module": "ES2020", // 用户自定义覆盖 - "moduleResolution": "node", // 用户自定义 + "target": "ES2020", // 指定 ECMAScript 目标版本: 'ES3' (default), 'ES5', 'ES6'/'ES2015', 'ES2016', 'ES2017', or 'ESNEXT' + "jsx": "preserve", // 指定 jsx 代码的生成: 'preserve', 'react-native', or 'react' + "jsxFactory": "h", // 当使用经典的JSX运行时编译JSX元素时,更改.js文件中调用的函数,默认:React.createElement + "jsxFragmentFactory": "Fragment", // 指定 JSX 片段工厂函数在指定了 jsxFactory 编译器选项的情况下针对 react JSX 发出时使用 指定使用模块: 'commonjs', 'amd', 'system', 'umd' or 'es2015' + "lib": ["ES2020", "DOM"], // 指定要包含在编译中的库文件 + "baseUrl": ".", // 用于解析非相对模块名称的基目录 + "module": "ES2020", // + "moduleResolution": "node", // 选择模块解析策略: 'node' (Node.js) or 'classic' (TypeScript pre-1.6) "paths": { - "@/*": ["src/*"] - }, // 用户自定义覆盖 - "resolveJsonModule": true, // 合并 web 配置 - "types": [], - "allowJs": true, - "checkJs": true, - "strict": true, + "@/*": ["src/*"] // 模块名到基于 baseUrl 的路径映射的列表 + }, + "resolveJsonModule": true, // 是否解析 JSON 模块 + "allowJs": true, // 允许编译 javascript 文件 + "checkJs": true, // 报告 javascript 文件中的错误 + "strict": true, // 开启所有严格的类型检查 "noImplicitAny": false, - "noImplicitThis": true, - "sourceMap": true, // 用户自定义覆盖 - "esModuleInterop": true, - "forceConsistentCasingInFileNames": true, - "isolatedModules": true, - "verbatimModuleSyntax": true, - "skipLibCheck": true, - "ignoreDeprecations": "5.0" + "sourceMap": true, // 是否生成相应的Map映射的文件,默认:false + "esModuleInterop": true, // 是否通过为所有导入模块创建命名空间对象,允许CommonJS和ES模块之间的互操作性,开启改选项时,也自动开启allowSyntheticDefaultImports选项,默认:false + "skipLibCheck": true, // 是否跳过声明文件的类型检查,这可以在编译期间以牺牲类型系统准确性为代价来节省时间,默认:false + "ignoreDeprecations": "5.0" // 选项 importsNotUsedAsValues 已弃用,并将在 TypeScript 5.5 中停止工作。指定 compilerOption 的 "ignoreprecations ": "5.0" 来消除这个错误,使用 verbatimModuleSyntax 代替 }, - "include": ["src/**/*", "src/**/*.vue", "vite.config.ts"], - "exclude": ["node_modules", "dist", "**/*.js"] + "include": ["src/**/*", "src/**/*.vue", "vite.config.ts"], // 指定被编译文件所在的目录 + "exclude": ["node_modules", "dist", "**/*.js"] // 指定不需要被编译的目录 }