feat: shared workspace
This commit is contained in:
parent
9c73c8dea0
commit
190d25857f
@ -1,7 +1,6 @@
|
|||||||
import { Result } from '@/request/Result'
|
import { Result } from '@/request/Result'
|
||||||
import { get, post, del, put } from '@/request/index'
|
import { get, post, del, put } from '@/request/index'
|
||||||
import { type Ref } from 'vue'
|
import { type Ref } from 'vue'
|
||||||
import type { pageRequest } from '@/api/type/common'
|
|
||||||
|
|
||||||
import useStore from '@/stores'
|
import useStore from '@/stores'
|
||||||
const prefix: any = { _value: '/workspace/' }
|
const prefix: any = { _value: '/workspace/' }
|
||||||
|
|||||||
@ -9,7 +9,6 @@ import type {
|
|||||||
} from '@/api/type/model'
|
} from '@/api/type/model'
|
||||||
import type { FormField } from '@/components/dynamics-form/type'
|
import type { FormField } from '@/components/dynamics-form/type'
|
||||||
|
|
||||||
|
|
||||||
import useStore from '@/stores'
|
import useStore from '@/stores'
|
||||||
const prefix: any = { _value: '/workspace/' }
|
const prefix: any = { _value: '/workspace/' }
|
||||||
Object.defineProperty(prefix, 'value', {
|
Object.defineProperty(prefix, 'value', {
|
||||||
@ -24,7 +23,7 @@ Object.defineProperty(prefix, 'value', {
|
|||||||
* @params 参数 name, model_type, model_name
|
* @params 参数 name, model_type, model_name
|
||||||
*/
|
*/
|
||||||
const getModel: (
|
const getModel: (
|
||||||
request?: ListModelRequest,
|
data?: ListModelRequest,
|
||||||
loading?: Ref<boolean>,
|
loading?: Ref<boolean>,
|
||||||
) => Promise<Result<Array<Model>>> = (data, loading) => {
|
) => Promise<Result<Array<Model>>> = (data, loading) => {
|
||||||
return get(`${prefix.value}`, data, loading)
|
return get(`${prefix.value}`, data, loading)
|
||||||
|
|||||||
@ -15,13 +15,13 @@ Object.defineProperty(prefix_workspace, 'value', {
|
|||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
|
||||||
const getSharedWorkspaceKnowledge: (loading?: Ref<boolean>) => Promise<Result<Array<any>>> = (
|
const getKnowledgeList: (loading?: Ref<boolean>) => Promise<Result<Array<any>>> = (
|
||||||
loading,
|
loading,
|
||||||
) => {
|
) => {
|
||||||
return get(`${prefix}/${prefix_workspace.value}/knowledge`, {}, loading)
|
return get(`${prefix}/${prefix_workspace.value}/knowledge`, {}, loading)
|
||||||
}
|
}
|
||||||
|
|
||||||
const getSharedWorkspaceKnowledgePage: (
|
const getKnowledgeListPage: (
|
||||||
page: pageRequest,
|
page: pageRequest,
|
||||||
param: any,
|
param: any,
|
||||||
loading?: Ref<boolean>,
|
loading?: Ref<boolean>,
|
||||||
@ -33,46 +33,31 @@ const getSharedWorkspaceKnowledgePage: (
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
const getSharedWorkspaceModel: (loading?: Ref<boolean>) => Promise<Result<Array<any>>> = (
|
const getModel: (
|
||||||
loading,
|
|
||||||
) => {
|
|
||||||
return get(`${prefix}/${prefix_workspace.value}/model`, {}, loading)
|
|
||||||
}
|
|
||||||
|
|
||||||
const getCESharedWorkspaceModel: (loading?: Ref<boolean>) => Promise<Result<Array<any>>> = (
|
|
||||||
loading,
|
|
||||||
) => {
|
|
||||||
return get(`/${prefix_workspace.value}/model`, {}, loading)
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
const getSharedWorkspaceModelPage: (
|
|
||||||
param: any,
|
param: any,
|
||||||
loading?: Ref<boolean>,
|
loading?: Ref<boolean>,
|
||||||
) => Promise<Result<Array<any>>> = (param: any, loading) => {
|
) => Promise<Result<Array<any>>> = (param: any, loading) => {
|
||||||
console.log(`${prefix}/${prefix_workspace.value}/model`)
|
|
||||||
return get(`${prefix}/${prefix_workspace.value}/model`, param, loading)
|
return get(`${prefix}/${prefix_workspace.value}/model`, param, loading)
|
||||||
}
|
}
|
||||||
|
|
||||||
const getSharedWorkspaceTool: (loading?: Ref<boolean>) => Promise<Result<Array<any>>> = (
|
const getToolList: (loading?: Ref<boolean>) => Promise<Result<Array<any>>> = (
|
||||||
loading,
|
loading,
|
||||||
) => {
|
) => {
|
||||||
return get(`${prefix}/${prefix_workspace.value}/tool`, {}, loading)
|
return get(`${prefix}/${prefix_workspace.value}/tool`, {}, loading)
|
||||||
}
|
}
|
||||||
|
|
||||||
const getSharedWorkspaceToolPage: (
|
const getToolListPage: (
|
||||||
param: any,
|
page: pageRequest,
|
||||||
|
param?: any,
|
||||||
loading?: Ref<boolean>,
|
loading?: Ref<boolean>,
|
||||||
) => Promise<Result<Array<any>>> = (param: any, loading) => {
|
) => Promise<Result<any>> = (page, param, loading) => {
|
||||||
return get(`${prefix}/${prefix_workspace.value}/tool`, param, loading)
|
return get(`${prefix}/${prefix_workspace.value}/tool/${page.current_page}/${page.page_size}`, param, loading)
|
||||||
}
|
}
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
getSharedWorkspaceKnowledge,
|
getKnowledgeList,
|
||||||
getSharedWorkspaceKnowledgePage,
|
getKnowledgeListPage,
|
||||||
getSharedWorkspaceModel,
|
getModel,
|
||||||
getSharedWorkspaceModelPage,
|
getToolList,
|
||||||
getSharedWorkspaceTool,
|
getToolListPage
|
||||||
getSharedWorkspaceToolPage,
|
|
||||||
getCESharedWorkspaceModel
|
|
||||||
}
|
}
|
||||||
@ -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<boolean>) => Promise<Result<Array<Provider>>> = (loading) => {
|
|
||||||
return get(`${prefix_provider}`, {}, loading)
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获得供应商列表
|
|
||||||
*/
|
|
||||||
const getProviderByModelType: (
|
|
||||||
model_type: string,
|
|
||||||
loading?: Ref<boolean>,
|
|
||||||
) => Promise<Result<Array<Provider>>> = (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<boolean>,
|
|
||||||
) => Promise<Result<Array<FormField>>> = (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<boolean>,
|
|
||||||
) => Promise<Result<Array<KeyValue<string, string>>>> = (provider, loading?: Ref<boolean>) => {
|
|
||||||
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<boolean>,
|
|
||||||
) => Promise<Result<Array<BaseModel>>> = (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<boolean>,
|
|
||||||
) => Promise<Result<Array<BaseModel>>> = (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,
|
|
||||||
}
|
|
||||||
@ -2,8 +2,6 @@ import { Result } from '@/request/Result'
|
|||||||
import { get, put, post, del } from '@/request/index'
|
import { get, put, post, del } from '@/request/index'
|
||||||
import type { pageRequest } from '@/api/type/common'
|
import type { pageRequest } from '@/api/type/common'
|
||||||
import type { Ref } from 'vue'
|
import type { Ref } from 'vue'
|
||||||
|
|
||||||
import useStore from '@/stores'
|
|
||||||
const prefix = '/workspace'
|
const prefix = '/workspace'
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -17,10 +17,10 @@
|
|||||||
</div>
|
</div>
|
||||||
</slot>
|
</slot>
|
||||||
<slot name="subTitle"> </slot>
|
<slot name="subTitle"> </slot>
|
||||||
<div class="shared" v-if="isShared">{{t('views.system.shared')}}</div>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="status-tag">
|
<div class="status-tag">
|
||||||
<slot name="tag"> </slot>
|
<slot name="tag"> <!-- 放标签 --> </slot>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</slot>
|
</slot>
|
||||||
@ -61,9 +61,8 @@ const props = withDefaults(
|
|||||||
* 是否展示icon
|
* 是否展示icon
|
||||||
*/
|
*/
|
||||||
showIcon?: boolean
|
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)
|
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 {
|
.card-footer {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
bottom: 8px;
|
bottom: 8px;
|
||||||
|
|||||||
@ -9,7 +9,7 @@
|
|||||||
/>
|
/>
|
||||||
<div
|
<div
|
||||||
@click="handleSharedNodeClick"
|
@click="handleSharedNodeClick"
|
||||||
v-if="!!shareTitle"
|
v-if="showShared && hasPermission(EditionConst.IS_EE, 'OR')"
|
||||||
class="shared-knowledge"
|
class="shared-knowledge"
|
||||||
:class="currentNodeKey === 'share' && 'active'"
|
:class="currentNodeKey === 'share' && 'active'"
|
||||||
>
|
>
|
||||||
@ -83,6 +83,8 @@ import type { TreeInstance } from 'element-plus'
|
|||||||
import CreateFolderDialog from '@/components/folder-tree/CreateFolderDialog.vue'
|
import CreateFolderDialog from '@/components/folder-tree/CreateFolderDialog.vue'
|
||||||
import { t } from '@/locales'
|
import { t } from '@/locales'
|
||||||
import folderApi from '@/api/folder'
|
import folderApi from '@/api/folder'
|
||||||
|
import { EditionConst } from '@/utils/permission/data'
|
||||||
|
import { hasPermission } from '@/utils/permission/index'
|
||||||
defineOptions({ name: 'FolderTree' })
|
defineOptions({ name: 'FolderTree' })
|
||||||
const props = defineProps({
|
const props = defineProps({
|
||||||
data: {
|
data: {
|
||||||
@ -97,7 +99,7 @@ const props = defineProps({
|
|||||||
type: String,
|
type: String,
|
||||||
default: 'APPLICATION',
|
default: 'APPLICATION',
|
||||||
},
|
},
|
||||||
isShared: {
|
showShared: {
|
||||||
type: Boolean,
|
type: Boolean,
|
||||||
default: false,
|
default: false,
|
||||||
},
|
},
|
||||||
|
|||||||
@ -47,7 +47,7 @@
|
|||||||
import { ref } from 'vue'
|
import { ref } from 'vue'
|
||||||
import type { ResetCurrentUserPasswordRequest } from '@/api/type/user'
|
import type { ResetCurrentUserPasswordRequest } from '@/api/type/user'
|
||||||
import type { FormInstance, FormRules } from 'element-plus'
|
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 useStore from '@/stores'
|
||||||
import { useRouter } from 'vue-router'
|
import { useRouter } from 'vue-router'
|
||||||
import { t } from '@/locales'
|
import { t } from '@/locales'
|
||||||
|
|||||||
@ -4,9 +4,11 @@
|
|||||||
border-radius: var(--el-border-radius-base);
|
border-radius: var(--el-border-radius-base);
|
||||||
.el-select__wrapper {
|
.el-select__wrapper {
|
||||||
box-shadow: none !important;
|
box-shadow: none !important;
|
||||||
|
border-radius: var(--el-border-radius-base) 0 0 var(--el-border-radius-base);
|
||||||
}
|
}
|
||||||
.el-input__wrapper {
|
.el-input__wrapper {
|
||||||
box-shadow: none !important;
|
box-shadow: none !important;
|
||||||
|
border-radius: 0 var(--el-border-radius-base) var(--el-border-radius-base) 0;
|
||||||
}
|
}
|
||||||
&__left {
|
&__left {
|
||||||
border-right: 1px solid var(--el-border-color);
|
border-right: 1px solid var(--el-border-color);
|
||||||
|
|||||||
@ -28,3 +28,4 @@ export function loadPermissionApi(type: string) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
24
ui/src/utils/dynamics-api/shared-api.ts
Normal file
24
ui/src/utils/dynamics-api/shared-api.ts
Normal file
@ -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]
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -4,10 +4,15 @@
|
|||||||
<h3>
|
<h3>
|
||||||
{{ $t('common.setting') }}
|
{{ $t('common.setting') }}
|
||||||
</h3>
|
</h3>
|
||||||
<el-button type="primary" @click="submit(applicationFormRef)" :disabled="loading"
|
<el-button
|
||||||
v-hasPermission="[RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
|
type="primary"
|
||||||
RoleConst.USER.getWorkspaceRole,
|
@click="submit(applicationFormRef)"
|
||||||
PermissionConst.APPLICATION_OVERVIEW_PUBLIC.getWorkspacePermission]"
|
:disabled="loading"
|
||||||
|
v-hasPermission="[
|
||||||
|
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
|
||||||
|
RoleConst.USER.getWorkspaceRole,
|
||||||
|
PermissionConst.APPLICATION_OVERVIEW_PUBLIC.getWorkspacePermission,
|
||||||
|
]"
|
||||||
>
|
>
|
||||||
{{ $t('views.application.buttons.publish') }}
|
{{ $t('views.application.buttons.publish') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
@ -635,7 +640,7 @@ function getDetail() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function getKnowledge() {
|
function getKnowledge() {
|
||||||
knowledge.asyncGetFolderKnowledge(knowledgeLoading).then((res: any) => {
|
knowledge.asyncGetFolderKnowledge('', knowledgeLoading).then((res: any) => {
|
||||||
knowledgeList.value = res.data
|
knowledgeList.value = res.data
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
@ -44,6 +44,7 @@
|
|||||||
class="p-8"
|
class="p-8"
|
||||||
v-loading="folderLoading"
|
v-loading="folderLoading"
|
||||||
:canOperation="false"
|
:canOperation="false"
|
||||||
|
showShared
|
||||||
/>
|
/>
|
||||||
</template>
|
</template>
|
||||||
<el-scrollbar>
|
<el-scrollbar>
|
||||||
@ -51,7 +52,7 @@
|
|||||||
<el-row :gutter="12" v-loading="loading">
|
<el-row :gutter="12" v-loading="loading">
|
||||||
<el-col
|
<el-col
|
||||||
:span="12"
|
:span="12"
|
||||||
v-for="(item, index) in filterData.filter((v:any) => v.resource_type !== 'folder')"
|
v-for="(item, index) in filterData.filter((v: any) => v.resource_type !== 'folder')"
|
||||||
:key="index"
|
:key="index"
|
||||||
class="mb-16"
|
class="mb-16"
|
||||||
>
|
>
|
||||||
@ -104,7 +105,7 @@ const props = defineProps({
|
|||||||
})
|
})
|
||||||
|
|
||||||
const emit = defineEmits(['addData', 'refresh'])
|
const emit = defineEmits(['addData', 'refresh'])
|
||||||
const { folder, user,knowledge } = useStore()
|
const { folder, user, knowledge } = useStore()
|
||||||
|
|
||||||
const dialogVisible = ref<boolean>(false)
|
const dialogVisible = ref<boolean>(false)
|
||||||
const checkList = ref([])
|
const checkList = ref([])
|
||||||
@ -192,10 +193,8 @@ function getFolder() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function getList() {
|
function getList() {
|
||||||
const params = {
|
const folder_id = currentFolder.value?.id || user.getWorkspaceId()
|
||||||
folder_id: currentFolder.value?.id || user.getWorkspaceId(),
|
knowledge.asyncGetFolderKnowledge(folder_id, loading).then((res: any) => {
|
||||||
}
|
|
||||||
knowledge.asyncGetFolderKnowledge(params, loading).then((res) => {
|
|
||||||
searchDate.value = res.data
|
searchDate.value = res.data
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
@ -61,7 +61,7 @@ import type { ResetPasswordRequest } from '@/api/type/user'
|
|||||||
import { useRouter, useRoute } from 'vue-router'
|
import { useRouter, useRoute } from 'vue-router'
|
||||||
import { MsgSuccess } from '@/utils/message'
|
import { MsgSuccess } from '@/utils/message'
|
||||||
import type { FormInstance, FormRules } from 'element-plus'
|
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'
|
import { t } from '@/locales'
|
||||||
const router = useRouter()
|
const router = useRouter()
|
||||||
const route = useRoute()
|
const route = useRoute()
|
||||||
|
|||||||
@ -8,12 +8,11 @@
|
|||||||
:currentNodeKey="currentFolder?.id"
|
:currentNodeKey="currentFolder?.id"
|
||||||
@handleNodeClick="folderClickHandel"
|
@handleNodeClick="folderClickHandel"
|
||||||
class="p-8"
|
class="p-8"
|
||||||
isShared
|
showShared
|
||||||
@refreshTree="refreshFolder"
|
@refreshTree="refreshFolder"
|
||||||
/>
|
/>
|
||||||
</template>
|
</template>
|
||||||
<SharedWorkspace v-if="currentFolder.id === 'share'"></SharedWorkspace>
|
<ContentContainer :header="currentFolder?.name">
|
||||||
<ContentContainer v-else :header="currentFolder?.name">
|
|
||||||
<template #search>
|
<template #search>
|
||||||
<div class="flex">
|
<div class="flex">
|
||||||
<div class="flex-between complex-search">
|
<div class="flex-between complex-search">
|
||||||
@ -45,7 +44,7 @@
|
|||||||
<el-option v-for="u in user_options" :key="u.id" :value="u.id" :label="u.username" />
|
<el-option v-for="u in user_options" :key="u.id" :value="u.id" :label="u.username" />
|
||||||
</el-select>
|
</el-select>
|
||||||
</div>
|
</div>
|
||||||
<el-dropdown trigger="click">
|
<el-dropdown trigger="click" v-if="!isShared">
|
||||||
<el-button
|
<el-button
|
||||||
type="primary"
|
type="primary"
|
||||||
class="ml-8"
|
class="ml-8"
|
||||||
@ -193,7 +192,6 @@
|
|||||||
<CardBox
|
<CardBox
|
||||||
:title="item.name"
|
:title="item.name"
|
||||||
:description="item.desc"
|
:description="item.desc"
|
||||||
:isShared="currentFolder.id === 'share'"
|
|
||||||
class="cursor"
|
class="cursor"
|
||||||
@click="
|
@click="
|
||||||
router.push({ path: `/knowledge/${item.id}/${currentFolder.id}/document` })
|
router.push({ path: `/knowledge/${item.id}/${currentFolder.id}/document` })
|
||||||
@ -207,7 +205,11 @@
|
|||||||
{{ $t('common.creator') }}: {{ item.nick_name }}
|
{{ $t('common.creator') }}: {{ item.nick_name }}
|
||||||
</el-text>
|
</el-text>
|
||||||
</template>
|
</template>
|
||||||
|
<template #tag>
|
||||||
|
<el-tag v-if="isShared" type="info" class="info-tag">
|
||||||
|
{{ t('views.system.shared') }}
|
||||||
|
</el-tag>
|
||||||
|
</template>
|
||||||
<template #footer>
|
<template #footer>
|
||||||
<div class="footer-content flex-between">
|
<div class="footer-content flex-between">
|
||||||
<div>
|
<div>
|
||||||
@ -227,7 +229,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<template #mouseEnter>
|
<template #mouseEnter>
|
||||||
<div @click.stop>
|
<div @click.stop v-if="!isShared">
|
||||||
<el-dropdown trigger="click">
|
<el-dropdown trigger="click">
|
||||||
<el-button text @click.stop>
|
<el-button text @click.stop>
|
||||||
<el-icon>
|
<el-icon>
|
||||||
@ -338,7 +340,7 @@
|
|||||||
<el-dropdown-item
|
<el-dropdown-item
|
||||||
icon="Delete"
|
icon="Delete"
|
||||||
type="danger"
|
type="danger"
|
||||||
@click.stop="deleteKnowledge(item)"
|
@click.stop="deleteKnowledge(item)"
|
||||||
v-if="
|
v-if="
|
||||||
hasPermission(
|
hasPermission(
|
||||||
[
|
[
|
||||||
@ -367,15 +369,15 @@
|
|||||||
</div>
|
</div>
|
||||||
</ContentContainer>
|
</ContentContainer>
|
||||||
|
|
||||||
<component :is="currentCreateDialog" ref="CreateKnowledgeDialogRef" />
|
<component :is="currentCreateDialog" ref="CreateKnowledgeDialogRef" v-if="!isShared" />
|
||||||
<CreateFolderDialog ref="CreateFolderDialogRef" @refresh="refreshFolder" />
|
<CreateFolderDialog ref="CreateFolderDialogRef" @refresh="refreshFolder" v-if="!isShared" />
|
||||||
<GenerateRelatedDialog ref="GenerateRelatedDialogRef" />
|
<GenerateRelatedDialog ref="GenerateRelatedDialogRef" />
|
||||||
<SyncWebDialog ref="SyncWebDialogRef" />
|
<SyncWebDialog ref="SyncWebDialogRef" v-if="!isShared" />
|
||||||
</LayoutContainer>
|
</LayoutContainer>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { onMounted, ref, reactive, shallowRef, nextTick } from 'vue'
|
import { onMounted, ref, reactive, shallowRef, nextTick, computed } from 'vue'
|
||||||
import CreateKnowledgeDialog from './create-component/CreateKnowledgeDialog.vue'
|
import CreateKnowledgeDialog from './create-component/CreateKnowledgeDialog.vue'
|
||||||
import CreateWebKnowledgeDialog from './create-component/CreateWebKnowledgeDialog.vue'
|
import CreateWebKnowledgeDialog from './create-component/CreateWebKnowledgeDialog.vue'
|
||||||
import CreateLarkKnowledgeDialog from './create-component/CreateLarkKnowledgeDialog.vue'
|
import CreateLarkKnowledgeDialog from './create-component/CreateLarkKnowledgeDialog.vue'
|
||||||
@ -383,7 +385,6 @@ import SyncWebDialog from './component/SyncWebDialog.vue'
|
|||||||
import CreateFolderDialog from '@/components/folder-tree/CreateFolderDialog.vue'
|
import CreateFolderDialog from '@/components/folder-tree/CreateFolderDialog.vue'
|
||||||
import GenerateRelatedDialog from '@/components/generate-related-dialog/index.vue'
|
import GenerateRelatedDialog from '@/components/generate-related-dialog/index.vue'
|
||||||
import KnowledgeApi from '@/api/knowledge/knowledge'
|
import KnowledgeApi from '@/api/knowledge/knowledge'
|
||||||
import SharedWorkspace from '@/views/shared/knowledge-shared/SharedWorkspace.vue'
|
|
||||||
import { MsgSuccess, MsgConfirm } from '@/utils/message'
|
import { MsgSuccess, MsgConfirm } from '@/utils/message'
|
||||||
import useStore from '@/stores'
|
import useStore from '@/stores'
|
||||||
import { numberFormat } from '@/utils/common'
|
import { numberFormat } from '@/utils/common'
|
||||||
@ -392,6 +393,7 @@ import { useRouter } from 'vue-router'
|
|||||||
import { FolderSource } from '@/enums/common'
|
import { FolderSource } from '@/enums/common'
|
||||||
import { PermissionConst, RoleConst } from '@/utils/permission/data'
|
import { PermissionConst, RoleConst } from '@/utils/permission/data'
|
||||||
import { hasPermission } from '@/utils/permission/index'
|
import { hasPermission } from '@/utils/permission/index'
|
||||||
|
import { loadSharedApi } from '@/utils/dynamics-api/shared-api'
|
||||||
|
|
||||||
const router = useRouter()
|
const router = useRouter()
|
||||||
const { folder, user } = useStore()
|
const { folder, user } = useStore()
|
||||||
@ -419,6 +421,9 @@ const currentFolder = ref<any>({})
|
|||||||
const CreateKnowledgeDialogRef = ref()
|
const CreateKnowledgeDialogRef = ref()
|
||||||
const currentCreateDialog = shallowRef<any>(null)
|
const currentCreateDialog = shallowRef<any>(null)
|
||||||
|
|
||||||
|
const isShared = computed(() => {
|
||||||
|
return currentFolder.value.id === 'share'
|
||||||
|
})
|
||||||
function openCreateDialog(data: any) {
|
function openCreateDialog(data: any) {
|
||||||
currentCreateDialog.value = data
|
currentCreateDialog.value = data
|
||||||
nextTick(() => {
|
nextTick(() => {
|
||||||
@ -463,10 +468,12 @@ function getList() {
|
|||||||
[search_type.value]: search_form.value[search_type.value],
|
[search_type.value]: search_form.value[search_type.value],
|
||||||
}
|
}
|
||||||
|
|
||||||
KnowledgeApi.getKnowledgeListPage(paginationConfig, params, loading).then((res) => {
|
loadSharedApi('knowledge', isShared.value)
|
||||||
paginationConfig.total = res.data.total
|
.getKnowledgeListPage(paginationConfig, params, loading)
|
||||||
knowledgeList.value = [...knowledgeList.value, ...res.data.records]
|
.then((res: any) => {
|
||||||
})
|
paginationConfig.total = res.data.total
|
||||||
|
knowledgeList.value = [...knowledgeList.value, ...res.data.records]
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
function clickFolder(item: any) {
|
function clickFolder(item: any) {
|
||||||
@ -531,11 +538,9 @@ function getFolder(bool?: boolean) {
|
|||||||
function folderClickHandel(row: any) {
|
function folderClickHandel(row: any) {
|
||||||
currentFolder.value = row
|
currentFolder.value = row
|
||||||
knowledgeList.value = []
|
knowledgeList.value = []
|
||||||
if (currentFolder.value.id === 'share') return
|
|
||||||
getList()
|
getList()
|
||||||
}
|
}
|
||||||
function refreshFolder() {
|
function refreshFolder() {
|
||||||
console.log(currentFolder.value)
|
|
||||||
knowledgeList.value = []
|
knowledgeList.value = []
|
||||||
getFolder()
|
getFolder()
|
||||||
}
|
}
|
||||||
|
|||||||
@ -75,7 +75,7 @@ import LoginLayout from '@/layout/login-layout/LoginLayout.vue'
|
|||||||
import type { CheckCodeRequest } from '@/api/type/user'
|
import type { CheckCodeRequest } from '@/api/type/user'
|
||||||
import { useRouter } from 'vue-router'
|
import { useRouter } from 'vue-router'
|
||||||
import type { FormInstance, FormRules } from 'element-plus'
|
import type { FormInstance, FormRules } from 'element-plus'
|
||||||
import UserApi from '@/api/user/user-manage'
|
import UserApi from '@/api/system/user-manage'
|
||||||
import { MsgSuccess } from '@/utils/message'
|
import { MsgSuccess } from '@/utils/message'
|
||||||
import { t } from '@/locales'
|
import { t } from '@/locales'
|
||||||
import useStore from '@/stores'
|
import useStore from '@/stores'
|
||||||
|
|||||||
@ -61,7 +61,7 @@ import type { ResetPasswordRequest } from '@/api/type/user'
|
|||||||
import { useRouter, useRoute } from 'vue-router'
|
import { useRouter, useRoute } from 'vue-router'
|
||||||
import { MsgSuccess } from '@/utils/message'
|
import { MsgSuccess } from '@/utils/message'
|
||||||
import type { FormInstance, FormRules } from 'element-plus'
|
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'
|
import { t } from '@/locales'
|
||||||
const router = useRouter()
|
const router = useRouter()
|
||||||
const route = useRoute()
|
const route = useRoute()
|
||||||
|
|||||||
@ -8,7 +8,7 @@
|
|||||||
{{ model.name }}
|
{{ model.name }}
|
||||||
<span v-if="currentModel.status === 'ERROR'">
|
<span v-if="currentModel.status === 'ERROR'">
|
||||||
<el-tooltip effect="dark" :content="errMessage" placement="top">
|
<el-tooltip effect="dark" :content="errMessage" placement="top">
|
||||||
<el-icon class="danger ml-4" size="18"><Warning/></el-icon>
|
<el-icon class="danger ml-4" size="18"><Warning /></el-icon>
|
||||||
</el-tooltip>
|
</el-tooltip>
|
||||||
</span>
|
</span>
|
||||||
<span v-if="currentModel.status === 'PAUSE_DOWNLOAD'">
|
<span v-if="currentModel.status === 'PAUSE_DOWNLOAD'">
|
||||||
@ -17,7 +17,7 @@
|
|||||||
:content="`${$t('views.model.modelForm.base_model.label')}: ${props.model.model_name} ${$t('views.model.tip.downloadError')}`"
|
:content="`${$t('views.model.modelForm.base_model.label')}: ${props.model.model_name} ${$t('views.model.tip.downloadError')}`"
|
||||||
placement="top"
|
placement="top"
|
||||||
>
|
>
|
||||||
<el-icon class="danger ml-4" size="18"><Warning/></el-icon>
|
<el-icon class="danger ml-4" size="18"><Warning /></el-icon>
|
||||||
</el-tooltip>
|
</el-tooltip>
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
@ -27,20 +27,23 @@
|
|||||||
{{ $t('common.creator') }}: {{ model.username }}
|
{{ $t('common.creator') }}: {{ model.username }}
|
||||||
</el-text>
|
</el-text>
|
||||||
</template>
|
</template>
|
||||||
|
<template #tag>
|
||||||
|
<el-tag v-if="isShared" type="info" class="info-tag">
|
||||||
|
{{ t('views.system.shared') }}
|
||||||
|
</el-tag>
|
||||||
|
</template>
|
||||||
<ul>
|
<ul>
|
||||||
<li class="flex mb-4">
|
<li class="flex mb-4">
|
||||||
<el-text type="info" class="color-secondary">{{
|
<el-text type="info" class="color-secondary"
|
||||||
$t('views.model.modelForm.model_type.label')
|
>{{ $t('views.model.modelForm.model_type.label') }}
|
||||||
}}
|
|
||||||
</el-text>
|
</el-text>
|
||||||
<span class="ellipsis ml-16">
|
<span class="ellipsis ml-16">
|
||||||
{{ $t(modelType[model.model_type as keyof typeof modelType]) }}</span
|
{{ $t(modelType[model.model_type as keyof typeof modelType]) }}</span
|
||||||
>
|
>
|
||||||
</li>
|
</li>
|
||||||
<li class="flex">
|
<li class="flex">
|
||||||
<el-text type="info" class="color-secondary">{{
|
<el-text type="info" class="color-secondary"
|
||||||
$t('views.model.modelForm.base_model.label')
|
>{{ $t('views.model.modelForm.base_model.label') }}
|
||||||
}}
|
|
||||||
</el-text>
|
</el-text>
|
||||||
<span class="ellipsis-1 ml-16" style="height: 20px; width: 70%">
|
<span class="ellipsis-1 ml-16" style="height: 20px; width: 70%">
|
||||||
{{ model.model_name }}</span
|
{{ model.model_name }}</span
|
||||||
@ -59,25 +62,31 @@
|
|||||||
class="ml-16"
|
class="ml-16"
|
||||||
:disabled="!is_permisstion"
|
:disabled="!is_permisstion"
|
||||||
@click.stop="cancelDownload"
|
@click.stop="cancelDownload"
|
||||||
>{{ $t('views.model.download.cancelDownload') }}
|
>{{ $t('views.model.download.cancelDownload') }}
|
||||||
</el-button
|
</el-button>
|
||||||
>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<template #mouseEnter>
|
<template #mouseEnter>
|
||||||
<el-dropdown trigger="click">
|
<el-dropdown trigger="click" v-if="!isShared">
|
||||||
<el-button text @click.stop>
|
<el-button text @click.stop>
|
||||||
<el-icon>
|
<el-icon>
|
||||||
<MoreFilled/>
|
<MoreFilled />
|
||||||
</el-icon>
|
</el-icon>
|
||||||
</el-button>
|
</el-button>
|
||||||
<template #dropdown>
|
<template #dropdown>
|
||||||
<el-dropdown-menu>
|
<el-dropdown-menu>
|
||||||
<el-dropdown-item
|
<el-dropdown-item
|
||||||
v-if="hasPermission([RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
|
v-if="
|
||||||
RoleConst.USER.getWorkspaceRole,
|
hasPermission(
|
||||||
PermissionConst.MODEL_EDIT.getWorkspacePermission],'OR')"
|
[
|
||||||
|
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
|
||||||
|
RoleConst.USER.getWorkspaceRole,
|
||||||
|
PermissionConst.MODEL_EDIT.getWorkspacePermission,
|
||||||
|
],
|
||||||
|
'OR',
|
||||||
|
)
|
||||||
|
"
|
||||||
icon="EditPen"
|
icon="EditPen"
|
||||||
:disabled="!is_permisstion"
|
:disabled="!is_permisstion"
|
||||||
text
|
text
|
||||||
@ -92,9 +101,14 @@
|
|||||||
currentModel.model_type === 'LLM' ||
|
currentModel.model_type === 'LLM' ||
|
||||||
currentModel.model_type === 'IMAGE' ||
|
currentModel.model_type === 'IMAGE' ||
|
||||||
currentModel.model_type === 'TTI' ||
|
currentModel.model_type === 'TTI' ||
|
||||||
hasPermission([RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
|
hasPermission(
|
||||||
RoleConst.USER.getWorkspaceRole,
|
[
|
||||||
PermissionConst.MODEL_EDIT.getWorkspacePermission],'OR')
|
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
|
||||||
|
RoleConst.USER.getWorkspaceRole,
|
||||||
|
PermissionConst.MODEL_EDIT.getWorkspacePermission,
|
||||||
|
],
|
||||||
|
'OR',
|
||||||
|
)
|
||||||
"
|
"
|
||||||
:disabled="!is_permisstion"
|
:disabled="!is_permisstion"
|
||||||
icon="Setting"
|
icon="Setting"
|
||||||
@ -108,9 +122,16 @@
|
|||||||
:disabled="!is_permisstion"
|
:disabled="!is_permisstion"
|
||||||
text
|
text
|
||||||
@click.stop="deleteModel"
|
@click.stop="deleteModel"
|
||||||
v-if="hasPermission([RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
|
v-if="
|
||||||
RoleConst.USER.getWorkspaceRole,
|
hasPermission(
|
||||||
PermissionConst.MODEL_DELETE.getWorkspacePermission],'OR')"
|
[
|
||||||
|
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
|
||||||
|
RoleConst.USER.getWorkspaceRole,
|
||||||
|
PermissionConst.MODEL_DELETE.getWorkspacePermission,
|
||||||
|
],
|
||||||
|
'OR',
|
||||||
|
)
|
||||||
|
"
|
||||||
>
|
>
|
||||||
{{ $t('common.delete') }}
|
{{ $t('common.delete') }}
|
||||||
</el-dropdown-item>
|
</el-dropdown-item>
|
||||||
@ -119,20 +140,20 @@
|
|||||||
</el-dropdown>
|
</el-dropdown>
|
||||||
</template>
|
</template>
|
||||||
<EditModel ref="editModelRef" @submit="emit('change')"></EditModel>
|
<EditModel ref="editModelRef" @submit="emit('change')"></EditModel>
|
||||||
<ParamSettingDialog ref="paramSettingRef" :model="model"/>
|
<ParamSettingDialog ref="paramSettingRef" :model="model" />
|
||||||
</card-box>
|
</card-box>
|
||||||
</template>
|
</template>
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import type {Provider, Model} from '@/api/type/model'
|
import type { Provider, Model } from '@/api/type/model'
|
||||||
import ModelApi from '@/api/model/model'
|
import ModelApi from '@/api/model/model'
|
||||||
import {computed, ref, onMounted, onBeforeUnmount} from 'vue'
|
import { computed, ref, onMounted, onBeforeUnmount } from 'vue'
|
||||||
import EditModel from '@/views/model/component/EditModel.vue'
|
import EditModel from '@/views/model/component/EditModel.vue'
|
||||||
// import DownloadLoading from '@/components/loading/DownloadLoading.vue'
|
// import DownloadLoading from '@/components/loading/DownloadLoading.vue'
|
||||||
import {MsgConfirm} from '@/utils/message'
|
import { MsgConfirm } from '@/utils/message'
|
||||||
import {modelType} from '@/enums/model'
|
import { modelType } from '@/enums/model'
|
||||||
import useStore from '@/stores'
|
import useStore from '@/stores'
|
||||||
import ParamSettingDialog from './ParamSettingDialog.vue'
|
import ParamSettingDialog from './ParamSettingDialog.vue'
|
||||||
import {t} from '@/locales'
|
import { t } from '@/locales'
|
||||||
import { PermissionConst, RoleConst } from '@/utils/permission/data'
|
import { PermissionConst, RoleConst } from '@/utils/permission/data'
|
||||||
import { hasPermission } from '@/utils/permission'
|
import { hasPermission } from '@/utils/permission'
|
||||||
|
|
||||||
@ -140,9 +161,10 @@ const props = defineProps<{
|
|||||||
model: Model
|
model: Model
|
||||||
provider_list: Array<Provider>
|
provider_list: Array<Provider>
|
||||||
updateModelById: (model_id: string, model: Model) => void
|
updateModelById: (model_id: string, model: Model) => void
|
||||||
|
isShared?: boolean | undefined
|
||||||
}>()
|
}>()
|
||||||
|
|
||||||
const {user} = useStore()
|
const { user } = useStore()
|
||||||
const downModel = ref<Model>()
|
const downModel = ref<Model>()
|
||||||
|
|
||||||
const is_permisstion = computed(() => {
|
const is_permisstion = computed(() => {
|
||||||
@ -182,8 +204,7 @@ const deleteModel = () => {
|
|||||||
emit('change')
|
emit('change')
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
.catch(() => {
|
.catch(() => {})
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const cancelDownload = () => {
|
const cancelDownload = () => {
|
||||||
|
|||||||
@ -4,9 +4,9 @@
|
|||||||
<div class="p-8">
|
<div class="p-8">
|
||||||
<div
|
<div
|
||||||
@click="handleSharedNodeClick"
|
@click="handleSharedNodeClick"
|
||||||
class="shared-knowledge"
|
class="shared-model"
|
||||||
v-if="isShared"
|
v-if="isShared && hasPermission(EditionConst.IS_EE, 'OR')"
|
||||||
:class="currentNodeKey === 'share' && 'active'"
|
:class="active?.provider === 'share' && 'active'"
|
||||||
>
|
>
|
||||||
<AppIcon iconName="app-folder-share-active" style="font-size: 18px"></AppIcon>
|
<AppIcon iconName="app-folder-share-active" style="font-size: 18px"></AppIcon>
|
||||||
<span class="ml-8 lighter">{{ $t('views.system.share_model') }}</span>
|
<span class="ml-8 lighter">{{ $t('views.system.share_model') }}</span>
|
||||||
@ -102,6 +102,9 @@
|
|||||||
import { watch, ref } from 'vue'
|
import { watch, ref } from 'vue'
|
||||||
import type { Provider, Model } from '@/api/type/model'
|
import type { Provider, Model } from '@/api/type/model'
|
||||||
import { modelTypeList, allObj } from '@/views/model/component/data'
|
import { modelTypeList, allObj } from '@/views/model/component/data'
|
||||||
|
import { EditionConst } from '@/utils/permission/data'
|
||||||
|
import { hasPermission } from '@/utils/permission/index'
|
||||||
|
import { t } from '@/locales'
|
||||||
const props = defineProps<{
|
const props = defineProps<{
|
||||||
data: Array<Provider>
|
data: Array<Provider>
|
||||||
loading: boolean
|
loading: boolean
|
||||||
@ -142,7 +145,7 @@ const clickListHandle = (item: Provider) => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const handleSharedNodeClick = () => {
|
const handleSharedNodeClick = () => {
|
||||||
emit('click', { id: 'share' })
|
emit('click', { provider: 'share', name: t('views.system.share_model') })
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
@ -188,7 +191,7 @@ const handleSharedNodeClick = () => {
|
|||||||
padding-bottom: 0 !important;
|
padding-bottom: 0 !important;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.shared-knowledge {
|
.shared-model {
|
||||||
padding-left: 8px;
|
padding-left: 8px;
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
|
|||||||
@ -11,8 +11,7 @@
|
|||||||
:active="active_provider"
|
:active="active_provider"
|
||||||
/>
|
/>
|
||||||
</template>
|
</template>
|
||||||
<SharedWorkspace v-if="active_provider && active_provider.id === 'share'"></SharedWorkspace>
|
<ContentContainer :header="active_provider?.name" v-loading="list_model_loading">
|
||||||
<ContentContainer v-else :header="active_provider?.name" v-loading="list_model_loading">
|
|
||||||
<template #search>
|
<template #search>
|
||||||
<div class="flex">
|
<div class="flex">
|
||||||
<div class="flex-between complex-search">
|
<div class="flex-between complex-search">
|
||||||
@ -55,13 +54,19 @@
|
|||||||
</template>
|
</template>
|
||||||
</el-select>
|
</el-select>
|
||||||
</div>
|
</div>
|
||||||
<el-button class="ml-16" type="primary" @click="openCreateModel(active_provider)"
|
<el-button
|
||||||
v-hasPermission="[RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
|
v-if="!isShared"
|
||||||
RoleConst.USER.getWorkspaceRole,
|
class="ml-16"
|
||||||
PermissionConst.MODEL_CREATE.getWorkspacePermission]"
|
type="primary"
|
||||||
|
@click="openCreateModel(active_provider)"
|
||||||
|
v-hasPermission="[
|
||||||
|
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
|
||||||
|
RoleConst.USER.getWorkspaceRole,
|
||||||
|
PermissionConst.MODEL_CREATE.getWorkspacePermission,
|
||||||
|
]"
|
||||||
>
|
>
|
||||||
{{ $t('views.model.addModel') }}
|
{{ $t('views.model.addModel') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@ -84,6 +89,7 @@
|
|||||||
:updateModelById="updateModelById"
|
:updateModelById="updateModelById"
|
||||||
:model="model"
|
:model="model"
|
||||||
:provider_list="provider_list"
|
:provider_list="provider_list"
|
||||||
|
:isShared="isShared"
|
||||||
>
|
>
|
||||||
</ModelCard>
|
</ModelCard>
|
||||||
</el-col>
|
</el-col>
|
||||||
@ -98,11 +104,13 @@
|
|||||||
ref="createModelRef"
|
ref="createModelRef"
|
||||||
@submit="list_model"
|
@submit="list_model"
|
||||||
@change="openCreateModel($event)"
|
@change="openCreateModel($event)"
|
||||||
|
v-if="!isShared"
|
||||||
></CreateModelDialog>
|
></CreateModelDialog>
|
||||||
|
|
||||||
<SelectProviderDialog
|
<SelectProviderDialog
|
||||||
ref="selectProviderRef"
|
ref="selectProviderRef"
|
||||||
@change="(provider, modelType) => openCreateModel(provider, modelType)"
|
@change="(provider, modelType) => openCreateModel(provider, modelType)"
|
||||||
|
v-if="!isShared"
|
||||||
></SelectProviderDialog>
|
></SelectProviderDialog>
|
||||||
</LayoutContainer>
|
</LayoutContainer>
|
||||||
</template>
|
</template>
|
||||||
@ -116,13 +124,10 @@ import ProviderComponent from '@/views/model/component/Provider.vue'
|
|||||||
import { splitArray } from '@/utils/common'
|
import { splitArray } from '@/utils/common'
|
||||||
import { modelTypeList, allObj } from '@/views/model/component/data'
|
import { modelTypeList, allObj } from '@/views/model/component/data'
|
||||||
import CreateModelDialog from '@/views/model/component/CreateModelDialog.vue'
|
import CreateModelDialog from '@/views/model/component/CreateModelDialog.vue'
|
||||||
import SharedWorkspace from '@/views/shared/model-shared/SharedWorkspace.vue'
|
|
||||||
import SelectProviderDialog from '@/views/model/component/SelectProviderDialog.vue'
|
import SelectProviderDialog from '@/views/model/component/SelectProviderDialog.vue'
|
||||||
import useStore from '@/stores'
|
|
||||||
import { t } from '@/locales'
|
import { t } from '@/locales'
|
||||||
import { PermissionConst, RoleConst } from '@/utils/permission/data'
|
import { PermissionConst, RoleConst } from '@/utils/permission/data'
|
||||||
|
import { loadSharedApi } from '@/utils/dynamics-api/shared-api'
|
||||||
const { model } = useStore()
|
|
||||||
|
|
||||||
const commonList1 = ref()
|
const commonList1 = ref()
|
||||||
const commonList2 = ref()
|
const commonList2 = ref()
|
||||||
@ -145,6 +150,9 @@ const provider_list = ref<Array<Provider>>([])
|
|||||||
|
|
||||||
const model_list = ref<Array<Model>>([])
|
const model_list = ref<Array<Model>>([])
|
||||||
|
|
||||||
|
const isShared = computed(() => {
|
||||||
|
return active_provider.value && active_provider.value.provider === 'share'
|
||||||
|
})
|
||||||
const updateModelById = (model_id: string, model: Model) => {
|
const updateModelById = (model_id: string, model: Model) => {
|
||||||
model_list.value
|
model_list.value
|
||||||
.filter((m) => m.id == model_id)
|
.filter((m) => m.id == model_id)
|
||||||
@ -177,8 +185,8 @@ const openCreateModel = (provider?: Provider, model_type?: string) => {
|
|||||||
|
|
||||||
const list_model = () => {
|
const list_model = () => {
|
||||||
const params = active_provider.value?.provider ? { provider: active_provider.value.provider } : {}
|
const params = active_provider.value?.provider ? { provider: active_provider.value.provider } : {}
|
||||||
model
|
loadSharedApi('model', isShared.value)
|
||||||
.asyncGetModel( { ...model_search_form.value, ...params }, list_model_loading)
|
.getModel({ ...model_search_form.value, ...params }, list_model_loading)
|
||||||
.then((ok: any) => {
|
.then((ok: any) => {
|
||||||
model_list.value = ok.data
|
model_list.value = ok.data
|
||||||
const v = model_list.value.map((m) => ({ id: m.user_id, username: m.username }))
|
const v = model_list.value.map((m) => ({ id: m.user_id, username: m.username }))
|
||||||
|
|||||||
@ -135,7 +135,6 @@ const defaultProps = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const loadTree = (node: any, resolve: any) => {
|
const loadTree = (node: any, resolve: any) => {
|
||||||
console.log(node)
|
|
||||||
if (node.isLeaf) return resolve([])
|
if (node.isLeaf) return resolve([])
|
||||||
const folder_id = node.level === 0 ? '' : node.data.id
|
const folder_id = node.level === 0 ? '' : node.data.id
|
||||||
knowledge.asyncGetFolderKnowledge(folder_id, optionLoading).then((res: any) => {
|
knowledge.asyncGetFolderKnowledge(folder_id, optionLoading).then((res: any) => {
|
||||||
|
|||||||
@ -86,7 +86,7 @@
|
|||||||
|
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { onMounted, ref, reactive, watch, computed } from 'vue'
|
import { onMounted, ref, reactive, watch, computed } from 'vue'
|
||||||
import AuthorizationApi from '@/api/user/resource-authorization'
|
import AuthorizationApi from '@/api/system/resource-authorization'
|
||||||
import PermissionSetting from './component/PermissionSetting.vue'
|
import PermissionSetting from './component/PermissionSetting.vue'
|
||||||
import { MsgSuccess, MsgConfirm } from '@/utils/message'
|
import { MsgSuccess, MsgConfirm } from '@/utils/message'
|
||||||
import { AuthorizationEnum } from '@/enums/system'
|
import { AuthorizationEnum } from '@/enums/system'
|
||||||
|
|||||||
@ -32,7 +32,7 @@ import { t } from '@/locales'
|
|||||||
import type { RoleItem } from '@/api/type/role'
|
import type { RoleItem } from '@/api/type/role'
|
||||||
import { MsgSuccess } from '@/utils/message'
|
import { MsgSuccess } from '@/utils/message'
|
||||||
import { RoleTypeEnum } from '@/enums/system'
|
import { RoleTypeEnum } from '@/enums/system'
|
||||||
import { loadPermissionApi } from '@/utils/permission-api'
|
import { loadPermissionApi } from '@/utils/dynamics-api/permission-api'
|
||||||
|
|
||||||
const props = defineProps<{
|
const props = defineProps<{
|
||||||
currentRole?: RoleItem
|
currentRole?: RoleItem
|
||||||
|
|||||||
@ -67,7 +67,7 @@ import { MsgSuccess, MsgConfirm } from '@/utils/message'
|
|||||||
import { t } from '@/locales'
|
import { t } from '@/locales'
|
||||||
import AddMemberDrawer from './AddMemberDrawer.vue'
|
import AddMemberDrawer from './AddMemberDrawer.vue'
|
||||||
import { RoleTypeEnum } from '@/enums/system'
|
import { RoleTypeEnum } from '@/enums/system'
|
||||||
import { loadPermissionApi } from '@/utils/permission-api'
|
import { loadPermissionApi } from '@/utils/dynamics-api/permission-api'
|
||||||
import { PermissionConst, RoleConst } from '@/utils/permission/data'
|
import { PermissionConst, RoleConst } from '@/utils/permission/data'
|
||||||
import { ComplexPermission } from '@/utils/permission/type'
|
import { ComplexPermission } from '@/utils/permission/type'
|
||||||
const props = defineProps<{
|
const props = defineProps<{
|
||||||
|
|||||||
@ -162,7 +162,7 @@ import type { RoleItem } from '@/api/type/role'
|
|||||||
import { RoleTypeEnum } from '@/enums/system'
|
import { RoleTypeEnum } from '@/enums/system'
|
||||||
import { roleTypeMap } from './index'
|
import { roleTypeMap } from './index'
|
||||||
import { MsgSuccess, MsgConfirm } from '@/utils/message'
|
import { MsgSuccess, MsgConfirm } from '@/utils/message'
|
||||||
import { loadPermissionApi } from '@/utils/permission-api'
|
import { loadPermissionApi } from '@/utils/dynamics-api/permission-api'
|
||||||
import { PermissionConst, RoleConst } from '@/utils/permission/data'
|
import { PermissionConst, RoleConst } from '@/utils/permission/data'
|
||||||
import { ComplexPermission } from '@/utils/permission/type'
|
import { ComplexPermission } from '@/utils/permission/type'
|
||||||
|
|
||||||
|
|||||||
@ -134,11 +134,10 @@ import CreateWebKnowledgeDialog from './create-component/CreateWebKnowledgeDialo
|
|||||||
import CreateFolderDialog from '@/components/folder-tree/CreateFolderDialog.vue'
|
import CreateFolderDialog from '@/components/folder-tree/CreateFolderDialog.vue'
|
||||||
import GenerateRelatedDialog from '@/components/generate-related-shared-dialog/index.vue'
|
import GenerateRelatedDialog from '@/components/generate-related-shared-dialog/index.vue'
|
||||||
import KnowledgeApi from '@/api/shared/knowledge'
|
import KnowledgeApi from '@/api/shared/knowledge'
|
||||||
import KnowledgeWorkspaceApi from '@/api/shared/workspace'
|
import KnowledgeWorkspaceApi from '@/api/shared-workspace'
|
||||||
import { MsgSuccess, MsgConfirm } from '@/utils/message'
|
import { MsgSuccess, MsgConfirm } from '@/utils/message'
|
||||||
import useStore from '@/stores/modules-shared-system'
|
import useStore from '@/stores/modules-shared-system'
|
||||||
import { numberFormat } from '@/utils/common'
|
import { numberFormat } from '@/utils/common'
|
||||||
import iconMap from '@/components/app-icon/icons/common'
|
|
||||||
import { t } from '@/locales'
|
import { t } from '@/locales'
|
||||||
import { useRouter } from 'vue-router'
|
import { useRouter } from 'vue-router'
|
||||||
import AuthorizedWorkspace from '@/views/shared/AuthorizedWorkspaceDialog.vue'
|
import AuthorizedWorkspace from '@/views/shared/AuthorizedWorkspaceDialog.vue'
|
||||||
@ -147,7 +146,6 @@ const router = useRouter()
|
|||||||
const { folder } = useStore()
|
const { folder } = useStore()
|
||||||
|
|
||||||
const loading = ref(false)
|
const loading = ref(false)
|
||||||
const rightOutlined = iconMap['right-outlined'].iconReader()
|
|
||||||
|
|
||||||
const search_type = ref('name')
|
const search_type = ref('name')
|
||||||
const search_form = ref<any>({
|
const search_form = ref<any>({
|
||||||
|
|||||||
@ -105,7 +105,7 @@
|
|||||||
import { onMounted, ref, computed } from 'vue'
|
import { onMounted, ref, computed } from 'vue'
|
||||||
import ProviderApi from '@/api/shared/provider'
|
import ProviderApi from '@/api/shared/provider'
|
||||||
import ModelApi from '@/api/shared/model'
|
import ModelApi from '@/api/shared/model'
|
||||||
import ModelWorkspaceApi from '@/api/shared/workspace'
|
import ModelWorkspaceApi from '@/api/shared-workspace'
|
||||||
import type { Provider, Model } from '@/api/type/model'
|
import type { Provider, Model } from '@/api/type/model'
|
||||||
import ModelCard from '@/views/shared/model-shared/component/ModelCardSharedWorkspace.vue'
|
import ModelCard from '@/views/shared/model-shared/component/ModelCardSharedWorkspace.vue'
|
||||||
import ProviderComponent from '@/views/shared/model-shared/component/Provider.vue'
|
import ProviderComponent from '@/views/shared/model-shared/component/Provider.vue'
|
||||||
|
|||||||
@ -119,7 +119,7 @@
|
|||||||
import { onMounted, ref, reactive, computed } from 'vue'
|
import { onMounted, ref, reactive, computed } from 'vue'
|
||||||
import { cloneDeep, get } from 'lodash'
|
import { cloneDeep, get } from 'lodash'
|
||||||
import ToolApi from '@/api/shared/tool'
|
import ToolApi from '@/api/shared/tool'
|
||||||
import ToolWorkspaceApi from '@/api/shared/workspace'
|
import ToolWorkspaceApi from '@/api/shared-workspace'
|
||||||
import useStore from '@/stores/modules-shared-system'
|
import useStore from '@/stores/modules-shared-system'
|
||||||
import InitParamDrawer from '@/views/shared/tool-shared/component/InitParamDrawer.vue'
|
import InitParamDrawer from '@/views/shared/tool-shared/component/InitParamDrawer.vue'
|
||||||
import ToolFormDrawer from './ToolFormDrawer.vue'
|
import ToolFormDrawer from './ToolFormDrawer.vue'
|
||||||
|
|||||||
@ -52,7 +52,7 @@
|
|||||||
import { ref, reactive, watch } from 'vue'
|
import { ref, reactive, watch } from 'vue'
|
||||||
import type { FormInstance } from 'element-plus'
|
import type { FormInstance } from 'element-plus'
|
||||||
import chatUserApi from '@/api/system/chat-user'
|
import chatUserApi from '@/api/system/chat-user'
|
||||||
import userManageApi from '@/api/user/user-manage'
|
import userManageApi from '@/api/system/user-manage'
|
||||||
import { MsgSuccess } from '@/utils/message'
|
import { MsgSuccess } from '@/utils/message'
|
||||||
import { t } from '@/locales'
|
import { t } from '@/locales'
|
||||||
import type { ListItem } from '@/api/type/common'
|
import type { ListItem } from '@/api/type/common'
|
||||||
|
|||||||
@ -7,16 +7,25 @@
|
|||||||
:data="folderList"
|
:data="folderList"
|
||||||
:currentNodeKey="currentFolder?.id"
|
:currentNodeKey="currentFolder?.id"
|
||||||
@handleNodeClick="folderClickHandel"
|
@handleNodeClick="folderClickHandel"
|
||||||
@refreshTree ="refreshFolder"
|
@refreshTree="refreshFolder"
|
||||||
:shareTitle="hasPermission(new ComplexPermission(
|
:shareTitle="
|
||||||
[RoleConst.ADMIN],[PermissionConst.SHARED_TOOL_READ],[EditionConst.IS_EE],'OR'
|
hasPermission(
|
||||||
), 'OR')?'views.system.share_tool':null"
|
new ComplexPermission(
|
||||||
isShared
|
[RoleConst.ADMIN],
|
||||||
|
[PermissionConst.SHARED_TOOL_READ],
|
||||||
|
[EditionConst.IS_EE],
|
||||||
|
'OR',
|
||||||
|
),
|
||||||
|
'OR',
|
||||||
|
)
|
||||||
|
? 'views.system.share_tool'
|
||||||
|
: null
|
||||||
|
"
|
||||||
|
showShared
|
||||||
class="p-8"
|
class="p-8"
|
||||||
/>
|
/>
|
||||||
</template>
|
</template>
|
||||||
<SharedWorkspace v-if="currentFolder.id === 'share'"></SharedWorkspace>
|
<ContentContainer :header="currentFolder?.name">
|
||||||
<ContentContainer v-else :header="currentFolder?.name">
|
|
||||||
<template #search>
|
<template #search>
|
||||||
<div class="flex">
|
<div class="flex">
|
||||||
<div class="flex-between complex-search">
|
<div class="flex-between complex-search">
|
||||||
@ -48,7 +57,7 @@
|
|||||||
<el-option v-for="u in user_options" :key="u.id" :value="u.id" :label="u.username" />
|
<el-option v-for="u in user_options" :key="u.id" :value="u.id" :label="u.username" />
|
||||||
</el-select>
|
</el-select>
|
||||||
</div>
|
</div>
|
||||||
<el-dropdown trigger="click">
|
<el-dropdown trigger="click" v-if="!isShared">
|
||||||
<el-button
|
<el-button
|
||||||
type="primary"
|
type="primary"
|
||||||
class="ml-8"
|
class="ml-8"
|
||||||
@ -104,7 +113,9 @@
|
|||||||
<img src="@/assets/node/icon_tool.svg" style="width: 58%" alt="" />
|
<img src="@/assets/node/icon_tool.svg" style="width: 58%" alt="" />
|
||||||
</el-avatar>
|
</el-avatar>
|
||||||
<div class="pre-wrap ml-8">
|
<div class="pre-wrap ml-8">
|
||||||
<div class="lighter">{{ $t('views.tool.toolStore.createFromToolStore') }}</div>
|
<div class="lighter">
|
||||||
|
{{ $t('views.tool.toolStore.createFromToolStore') }}
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</el-dropdown-item> -->
|
</el-dropdown-item> -->
|
||||||
@ -186,6 +197,11 @@
|
|||||||
{{ $t('common.creator') }}: {{ item.nick_name }}
|
{{ $t('common.creator') }}: {{ item.nick_name }}
|
||||||
</el-text>
|
</el-text>
|
||||||
</template>
|
</template>
|
||||||
|
<template #tag>
|
||||||
|
<el-tag v-if="isShared" type="info" class="info-tag">
|
||||||
|
{{ t('views.system.shared') }}
|
||||||
|
</el-tag>
|
||||||
|
</template>
|
||||||
|
|
||||||
<template #footer>
|
<template #footer>
|
||||||
<div v-if="item.is_active" class="flex align-center">
|
<div v-if="item.is_active" class="flex align-center">
|
||||||
@ -204,7 +220,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<template #mouseEnter>
|
<template #mouseEnter>
|
||||||
<div @click.stop>
|
<div @click.stop v-if="!isShared">
|
||||||
<el-switch
|
<el-switch
|
||||||
v-model="item.is_active"
|
v-model="item.is_active"
|
||||||
:before-change="() => changeState(item)"
|
:before-change="() => changeState(item)"
|
||||||
@ -318,7 +334,7 @@
|
|||||||
</ContentContainer>
|
</ContentContainer>
|
||||||
<InitParamDrawer ref="InitParamDrawerRef" @refresh="refresh" />
|
<InitParamDrawer ref="InitParamDrawerRef" @refresh="refresh" />
|
||||||
<ToolFormDrawer ref="ToolFormDrawerRef" @refresh="refresh" :title="ToolDrawertitle" />
|
<ToolFormDrawer ref="ToolFormDrawerRef" @refresh="refresh" :title="ToolDrawertitle" />
|
||||||
<CreateFolderDialog ref="CreateFolderDialogRef" @refresh="refreshFolder" />
|
<CreateFolderDialog ref="CreateFolderDialogRef" @refresh="refreshFolder" v-if="!isShared" />
|
||||||
<ToolStoreDialog ref="toolStoreDialogRef" @refresh="refresh" />
|
<ToolStoreDialog ref="toolStoreDialogRef" @refresh="refresh" />
|
||||||
</LayoutContainer>
|
</LayoutContainer>
|
||||||
</template>
|
</template>
|
||||||
@ -334,12 +350,12 @@ import CreateFolderDialog from '@/components/folder-tree/CreateFolderDialog.vue'
|
|||||||
import { t } from '@/locales'
|
import { t } from '@/locales'
|
||||||
import { isAppIcon } from '@/utils/common'
|
import { isAppIcon } from '@/utils/common'
|
||||||
import { MsgSuccess, MsgConfirm, MsgError } from '@/utils/message'
|
import { MsgSuccess, MsgConfirm, MsgError } from '@/utils/message'
|
||||||
import SharedWorkspace from '@/views/shared/tool-shared/SharedWorkspace.vue'
|
|
||||||
import { EditionConst, PermissionConst, RoleConst } from '@/utils/permission/data'
|
import { EditionConst, PermissionConst, RoleConst } from '@/utils/permission/data'
|
||||||
import { hasPermission } from '@/utils/permission/index'
|
import { hasPermission } from '@/utils/permission/index'
|
||||||
import { FolderSource } from '@/enums/common'
|
import { FolderSource } from '@/enums/common'
|
||||||
import { ComplexPermission } from '@/utils/permission/type'
|
import { ComplexPermission } from '@/utils/permission/type'
|
||||||
import ToolStoreDialog from './component/ToolStoreDialog.vue'
|
import ToolStoreDialog from './component/ToolStoreDialog.vue'
|
||||||
|
import { loadSharedApi } from '@/utils/dynamics-api/shared-api'
|
||||||
|
|
||||||
const { folder, user } = useStore()
|
const { folder, user } = useStore()
|
||||||
|
|
||||||
@ -366,6 +382,10 @@ const folderList = ref<any[]>([])
|
|||||||
const toolList = ref<any[]>([])
|
const toolList = ref<any[]>([])
|
||||||
const currentFolder = ref<any>({})
|
const currentFolder = ref<any>({})
|
||||||
|
|
||||||
|
const isShared = computed(() => {
|
||||||
|
return currentFolder.value.id === 'share'
|
||||||
|
})
|
||||||
|
|
||||||
const search_type_change = () => {
|
const search_type_change = () => {
|
||||||
search_form.value = { name: '', create_user: '' }
|
search_form.value = { name: '', create_user: '' }
|
||||||
}
|
}
|
||||||
@ -392,10 +412,12 @@ function getList() {
|
|||||||
folder_id: currentFolder.value?.id || user.getWorkspaceId(),
|
folder_id: currentFolder.value?.id || user.getWorkspaceId(),
|
||||||
scope: 'WORKSPACE',
|
scope: 'WORKSPACE',
|
||||||
}
|
}
|
||||||
ToolApi.getToolListPage(paginationConfig, params, loading).then((res) => {
|
loadSharedApi('tool', isShared.value)
|
||||||
paginationConfig.total = res.data?.total
|
.getToolListPage(paginationConfig, params, loading)
|
||||||
toolList.value = [...toolList.value, ...res.data?.records]
|
.then((res: any) => {
|
||||||
})
|
paginationConfig.total = res.data?.total
|
||||||
|
toolList.value = [...toolList.value, ...res.data?.records]
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
function clickFolder(item: any) {
|
function clickFolder(item: any) {
|
||||||
@ -565,7 +587,6 @@ function folderClickHandel(row: any) {
|
|||||||
getList()
|
getList()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
getFolder(true)
|
getFolder(true)
|
||||||
})
|
})
|
||||||
|
|||||||
@ -69,7 +69,7 @@
|
|||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import {ref, reactive, watch, onBeforeMount} from 'vue'
|
import {ref, reactive, watch, onBeforeMount} from 'vue'
|
||||||
import type {FormInstance} from 'element-plus'
|
import type {FormInstance} from 'element-plus'
|
||||||
import userManageApi from '@/api/user/user-manage'
|
import userManageApi from '@/api/system/user-manage'
|
||||||
import {MsgSuccess} from '@/utils/message'
|
import {MsgSuccess} from '@/utils/message'
|
||||||
import {t} from '@/locales'
|
import {t} from '@/locales'
|
||||||
import type {FormItemModel} from '@/api/type/role'
|
import type {FormItemModel} from '@/api/type/role'
|
||||||
|
|||||||
@ -44,7 +44,7 @@ import { ref, reactive, watch } from 'vue'
|
|||||||
import useStore from '@/stores'
|
import useStore from '@/stores'
|
||||||
import type { FormInstance, FormRules } from 'element-plus'
|
import type { FormInstance, FormRules } from 'element-plus'
|
||||||
import type { ResetPasswordRequest } from '@/api/type/user'
|
import type { ResetPasswordRequest } from '@/api/type/user'
|
||||||
import userManageApi from '@/api/user/user-manage'
|
import userManageApi from '@/api/system/user-manage'
|
||||||
import { MsgSuccess } from '@/utils/message'
|
import { MsgSuccess } from '@/utils/message'
|
||||||
import { t } from '@/locales'
|
import { t } from '@/locales'
|
||||||
const emit = defineEmits(['refresh'])
|
const emit = defineEmits(['refresh'])
|
||||||
|
|||||||
@ -143,7 +143,7 @@
|
|||||||
import { onMounted, ref, reactive, watch } from 'vue'
|
import { onMounted, ref, reactive, watch } from 'vue'
|
||||||
import UserDrawer from './component/UserDrawer.vue'
|
import UserDrawer from './component/UserDrawer.vue'
|
||||||
import UserPwdDialog from './component/UserPwdDialog.vue'
|
import UserPwdDialog from './component/UserPwdDialog.vue'
|
||||||
import userManageApi from '@/api/user/user-manage'
|
import userManageApi from '@/api/system/user-manage'
|
||||||
import { datetimeFormat } from '@/utils/time'
|
import { datetimeFormat } from '@/utils/time'
|
||||||
import { MsgSuccess, MsgConfirm } from '@/utils/message'
|
import { MsgSuccess, MsgConfirm } from '@/utils/message'
|
||||||
import { t } from '@/locales'
|
import { t } from '@/locales'
|
||||||
|
|||||||
@ -190,7 +190,7 @@ function getknowledge() {
|
|||||||
// knowledgeList.value = res.data
|
// knowledgeList.value = res.data
|
||||||
// })
|
// })
|
||||||
// } else {
|
// } else {
|
||||||
knowledge.asyncGetFolderKnowledge(knowledgeLoading).then((res: any) => {
|
knowledge.asyncGetFolderKnowledge('',knowledgeLoading).then((res: any) => {
|
||||||
knowledgeList.value = res.data?.filter((v: any) => v.user_id === user.userInfo?.id)
|
knowledgeList.value = res.data?.filter((v: any) => v.user_id === user.userInfo?.id)
|
||||||
})
|
})
|
||||||
// }
|
// }
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user