diff --git a/ui/src/api/folder.ts b/ui/src/api/folder.ts index 9ed60e4a8..9e69fdbc0 100644 --- a/ui/src/api/folder.ts +++ b/ui/src/api/folder.ts @@ -1,7 +1,6 @@ import { Result } from '@/request/Result' import { get, post, del, put } from '@/request/index' import { type Ref } from 'vue' -import type { pageRequest } from '@/api/type/common' import useStore from '@/stores' const prefix: any = { _value: '/workspace/' } diff --git a/ui/src/api/model/model.ts b/ui/src/api/model/model.ts index 45d22b97a..a88faca13 100644 --- a/ui/src/api/model/model.ts +++ b/ui/src/api/model/model.ts @@ -9,7 +9,6 @@ import type { } from '@/api/type/model' import type { FormField } from '@/components/dynamics-form/type' - import useStore from '@/stores' const prefix: any = { _value: '/workspace/' } Object.defineProperty(prefix, 'value', { @@ -24,7 +23,7 @@ Object.defineProperty(prefix, 'value', { * @params 参数 name, model_type, model_name */ const getModel: ( - request?: ListModelRequest, + data?: ListModelRequest, loading?: Ref, ) => Promise>> = (data, loading) => { return get(`${prefix.value}`, data, loading) diff --git a/ui/src/api/shared/workspace.ts b/ui/src/api/shared-workspace.ts similarity index 52% rename from ui/src/api/shared/workspace.ts rename to ui/src/api/shared-workspace.ts index 24217ca91..72a1e16d7 100644 --- a/ui/src/api/shared/workspace.ts +++ b/ui/src/api/shared-workspace.ts @@ -15,13 +15,13 @@ Object.defineProperty(prefix_workspace, 'value', { }, }) -const getSharedWorkspaceKnowledge: (loading?: Ref) => Promise>> = ( +const getKnowledgeList: (loading?: Ref) => Promise>> = ( loading, ) => { return get(`${prefix}/${prefix_workspace.value}/knowledge`, {}, loading) } -const getSharedWorkspaceKnowledgePage: ( +const getKnowledgeListPage: ( page: pageRequest, param: any, loading?: Ref, @@ -33,46 +33,31 @@ const getSharedWorkspaceKnowledgePage: ( ) } -const getSharedWorkspaceModel: (loading?: Ref) => Promise>> = ( - loading, -) => { - return get(`${prefix}/${prefix_workspace.value}/model`, {}, loading) -} - -const getCESharedWorkspaceModel: (loading?: Ref) => Promise>> = ( - loading, -) => { - return get(`/${prefix_workspace.value}/model`, {}, loading) - -} - -const getSharedWorkspaceModelPage: ( +const getModel: ( param: any, loading?: Ref, ) => Promise>> = (param: any, loading) => { - console.log(`${prefix}/${prefix_workspace.value}/model`) return get(`${prefix}/${prefix_workspace.value}/model`, param, loading) } -const getSharedWorkspaceTool: (loading?: Ref) => Promise>> = ( +const getToolList: (loading?: Ref) => Promise>> = ( loading, ) => { return get(`${prefix}/${prefix_workspace.value}/tool`, {}, loading) } -const getSharedWorkspaceToolPage: ( - param: any, +const getToolListPage: ( + page: pageRequest, + param?: any, loading?: Ref, -) => Promise>> = (param: any, loading) => { - return get(`${prefix}/${prefix_workspace.value}/tool`, param, loading) +) => Promise> = (page, param, loading) => { + return get(`${prefix}/${prefix_workspace.value}/tool/${page.current_page}/${page.page_size}`, param, loading) } export default { - getSharedWorkspaceKnowledge, - getSharedWorkspaceKnowledgePage, - getSharedWorkspaceModel, - getSharedWorkspaceModelPage, - getSharedWorkspaceTool, - getSharedWorkspaceToolPage, - getCESharedWorkspaceModel + getKnowledgeList, + getKnowledgeListPage, + getModel, + getToolList, + getToolListPage } diff --git a/ui/src/api/shared/provider.ts b/ui/src/api/shared/provider.ts deleted file mode 100644 index 9376b7d63..000000000 --- a/ui/src/api/shared/provider.ts +++ /dev/null @@ -1,86 +0,0 @@ -import {Result} from '@/request/Result' -import {get, post} from '@/request/index' -import type {Ref} from 'vue' -import type {Provider, BaseModel} from '@/api/type/model' -import type {FormField} from '@/components/dynamics-form/type' -import type {KeyValue} from '../type/common' - -const prefix_provider = '/provider' -/** - * 获得供应商列表 - */ -const getProvider: (loading?: Ref) => Promise>> = (loading) => { - return get(`${prefix_provider}`, {}, loading) -} - -/** - * 获得供应商列表 - */ -const getProviderByModelType: ( - model_type: string, - loading?: Ref, -) => Promise>> = (model_type, loading) => { - return get(`${prefix_provider}`, {model_type}, loading) -} - -/** - * 获取模型创建表单 - * @param provider - * @param model_type - * @param model_name - * @param loading - * @returns - */ -const getModelCreateForm: ( - provider: string, - model_type: string, - model_name: string, - loading?: Ref, -) => Promise>> = (provider, model_type, model_name, loading) => { - return get(`${prefix_provider}/model_form`, {provider, model_type, model_name}, loading) -} - -/** - * 获取模型类型列表 - * @param provider 供应商 - * @param loading 加载器 - * @returns 模型类型列表 - */ -const listModelType: ( - provider: string, - loading?: Ref, -) => Promise>>> = (provider, loading?: Ref) => { - return get(`${prefix_provider}/model_type_list`, {provider}, loading) -} - -/** - * 获取基础模型列表 - * @param provider - * @param model_type - * @param loading - * @returns - */ -const listBaseModel: ( - provider: string, - model_type: string, - loading?: Ref, -) => Promise>> = (provider, model_type, loading) => { - return get(`${prefix_provider}/model_list`, {provider, model_type}, loading) -} - -const listBaseModelParamsForm: ( - provider: string, - model_type: string, - model_name: string, - loading?: Ref, -) => Promise>> = (provider, model_type, model_name, loading) => { - return get(`${prefix_provider}/model_params_form`, {provider, model_type, model_name}, loading) -} -export default { - getProvider, - getModelCreateForm, - getProviderByModelType, - listModelType, - listBaseModel, - listBaseModelParamsForm, -} diff --git a/ui/src/api/user/resource-authorization.ts b/ui/src/api/system/resource-authorization.ts similarity index 98% rename from ui/src/api/user/resource-authorization.ts rename to ui/src/api/system/resource-authorization.ts index 4c4bba8a8..dae9e79c4 100644 --- a/ui/src/api/user/resource-authorization.ts +++ b/ui/src/api/system/resource-authorization.ts @@ -2,8 +2,6 @@ import { Result } from '@/request/Result' import { get, put, post, del } from '@/request/index' import type { pageRequest } from '@/api/type/common' import type { Ref } from 'vue' - -import useStore from '@/stores' const prefix = '/workspace' /** diff --git a/ui/src/api/user/user-manage.ts b/ui/src/api/system/user-manage.ts similarity index 100% rename from ui/src/api/user/user-manage.ts rename to ui/src/api/system/user-manage.ts diff --git a/ui/src/components/card-box/index.vue b/ui/src/components/card-box/index.vue index 0dd51e564..2acb49633 100644 --- a/ui/src/components/card-box/index.vue +++ b/ui/src/components/card-box/index.vue @@ -17,10 +17,10 @@ -
{{t('views.system.shared')}}
+
- +
@@ -61,9 +61,8 @@ const props = withDefaults( * 是否展示icon */ showIcon?: boolean - isShared?: boolean }>(), - { title: t('common.title'), description: '', showIcon: true, border: true, isShared: false }, + { title: t('common.title'), description: '', showIcon: true, border: true }, ) const show = ref(false) @@ -104,28 +103,6 @@ function subHoveredEnter() { } } - .shared { - position: absolute; - right: 20px; - top: 17px; - font-weight: 400; - font-size: 12px; - line-height: 20px; - color: #646a73; - - &::after { - content: ''; - background-color: #1f23291a; - position: absolute; - top: 50%; - left: 50%; - transform: translate(-50%, -50%); - width: 32px; - height: 20px; - border-radius: 4px; - } - } - .card-footer { position: absolute; bottom: 8px; diff --git a/ui/src/components/folder-tree/index.vue b/ui/src/components/folder-tree/index.vue index 8f2e5a2ef..c50e1c5af 100644 --- a/ui/src/components/folder-tree/index.vue +++ b/ui/src/components/folder-tree/index.vue @@ -9,7 +9,7 @@ />
@@ -83,6 +83,8 @@ import type { TreeInstance } from 'element-plus' import CreateFolderDialog from '@/components/folder-tree/CreateFolderDialog.vue' import { t } from '@/locales' import folderApi from '@/api/folder' +import { EditionConst } from '@/utils/permission/data' +import { hasPermission } from '@/utils/permission/index' defineOptions({ name: 'FolderTree' }) const props = defineProps({ data: { @@ -97,7 +99,7 @@ const props = defineProps({ type: String, default: 'APPLICATION', }, - isShared: { + showShared: { type: Boolean, default: false, }, diff --git a/ui/src/layout/layout-header/avatar/ResetPassword.vue b/ui/src/layout/layout-header/avatar/ResetPassword.vue index 81cd8a9e9..7c5138070 100644 --- a/ui/src/layout/layout-header/avatar/ResetPassword.vue +++ b/ui/src/layout/layout-header/avatar/ResetPassword.vue @@ -47,7 +47,7 @@ import { ref } from 'vue' import type { ResetCurrentUserPasswordRequest } from '@/api/type/user' import type { FormInstance, FormRules } from 'element-plus' -import UserApi from '@/api/user/user-manage' +import UserApi from '@/api/system/user-manage' import useStore from '@/stores' import { useRouter } from 'vue-router' import { t } from '@/locales' diff --git a/ui/src/styles/component.scss b/ui/src/styles/component.scss index ee2329499..1219445a5 100644 --- a/ui/src/styles/component.scss +++ b/ui/src/styles/component.scss @@ -4,9 +4,11 @@ border-radius: var(--el-border-radius-base); .el-select__wrapper { box-shadow: none !important; + border-radius: var(--el-border-radius-base) 0 0 var(--el-border-radius-base); } .el-input__wrapper { box-shadow: none !important; + border-radius: 0 var(--el-border-radius-base) var(--el-border-radius-base) 0; } &__left { border-right: 1px solid var(--el-border-color); diff --git a/ui/src/utils/permission-api.ts b/ui/src/utils/dynamics-api/permission-api.ts similarity index 99% rename from ui/src/utils/permission-api.ts rename to ui/src/utils/dynamics-api/permission-api.ts index 2375bd3d2..85c341357 100644 --- a/ui/src/utils/permission-api.ts +++ b/ui/src/utils/dynamics-api/permission-api.ts @@ -28,3 +28,4 @@ export function loadPermissionApi(type: string) { } } } + diff --git a/ui/src/utils/dynamics-api/shared-api.ts b/ui/src/utils/dynamics-api/shared-api.ts new file mode 100644 index 000000000..f1ed6e3d3 --- /dev/null +++ b/ui/src/utils/dynamics-api/shared-api.ts @@ -0,0 +1,24 @@ +import knowledgeWorkspaceApi from '@/api/knowledge/knowledge' +import modelWorkspaceApi from '@/api/model/model' +import toolWorkspaceApi from '@/api/tool/tool' +import sharedWorkspaceApi from '@/api/shared-workspace' + +// 普通 API +const workspaceApiMap = { + knowledge: knowledgeWorkspaceApi, + model: modelWorkspaceApi, + tool: toolWorkspaceApi, +} as any + +/** 动态导入 API 模块的函数 + * loadSharedApi('knowledge', true) + */ + +export function loadSharedApi(type: string, isShared?: boolean) { + if (isShared) { + // 共享 API + return sharedWorkspaceApi + } else { + return workspaceApiMap[type] + } +} diff --git a/ui/src/views/application/ApplicationSetting.vue b/ui/src/views/application/ApplicationSetting.vue index 0772bcc56..0ad6e316c 100644 --- a/ui/src/views/application/ApplicationSetting.vue +++ b/ui/src/views/application/ApplicationSetting.vue @@ -4,10 +4,15 @@

{{ $t('common.setting') }}

- {{ $t('views.application.buttons.publish') }} @@ -635,7 +640,7 @@ function getDetail() { } function getKnowledge() { - knowledge.asyncGetFolderKnowledge(knowledgeLoading).then((res: any) => { + knowledge.asyncGetFolderKnowledge('', knowledgeLoading).then((res: any) => { knowledgeList.value = res.data }) } diff --git a/ui/src/views/application/component/AddKnowledgeDialog.vue b/ui/src/views/application/component/AddKnowledgeDialog.vue index 3c319ef81..7d854e469 100644 --- a/ui/src/views/application/component/AddKnowledgeDialog.vue +++ b/ui/src/views/application/component/AddKnowledgeDialog.vue @@ -44,6 +44,7 @@ class="p-8" v-loading="folderLoading" :canOperation="false" + showShared /> @@ -51,7 +52,7 @@ @@ -104,7 +105,7 @@ const props = defineProps({ }) const emit = defineEmits(['addData', 'refresh']) -const { folder, user,knowledge } = useStore() +const { folder, user, knowledge } = useStore() const dialogVisible = ref(false) const checkList = ref([]) @@ -192,10 +193,8 @@ function getFolder() { } function getList() { - const params = { - folder_id: currentFolder.value?.id || user.getWorkspaceId(), - } - knowledge.asyncGetFolderKnowledge(params, loading).then((res) => { + const folder_id = currentFolder.value?.id || user.getWorkspaceId() + knowledge.asyncGetFolderKnowledge(folder_id, loading).then((res: any) => { searchDate.value = res.data }) } diff --git a/ui/src/views/chat/user-login/ResetPassword.vue b/ui/src/views/chat/user-login/ResetPassword.vue index f8138c2f8..7b5a32baa 100644 --- a/ui/src/views/chat/user-login/ResetPassword.vue +++ b/ui/src/views/chat/user-login/ResetPassword.vue @@ -61,7 +61,7 @@ import type { ResetPasswordRequest } from '@/api/type/user' import { useRouter, useRoute } from 'vue-router' import { MsgSuccess } from '@/utils/message' import type { FormInstance, FormRules } from 'element-plus' -import UserApi from '@/api/user/user-manage' +import UserApi from '@/api/system/user-manage' import { t } from '@/locales' const router = useRouter() const route = useRoute() diff --git a/ui/src/views/knowledge/index.vue b/ui/src/views/knowledge/index.vue index 9ef31229f..d62093add 100644 --- a/ui/src/views/knowledge/index.vue +++ b/ui/src/views/knowledge/index.vue @@ -8,12 +8,11 @@ :currentNodeKey="currentFolder?.id" @handleNodeClick="folderClickHandel" class="p-8" - isShared + showShared @refreshTree="refreshFolder" /> - - +