feat: knowledge resource management and model resource management
This commit is contained in:
parent
5022b2a872
commit
03fbba0952
@ -3,7 +3,6 @@ import {get, post, postStream, del, put, request, download, exportFile} from '@/
|
|||||||
import type {pageRequest} from '@/api/type/common'
|
import type {pageRequest} from '@/api/type/common'
|
||||||
import type {ApplicationFormType} from '@/api/type/application'
|
import type {ApplicationFormType} from '@/api/type/application'
|
||||||
import {type Ref} from 'vue'
|
import {type Ref} from 'vue'
|
||||||
import useStore from '@/stores'
|
|
||||||
|
|
||||||
const prefix = '/system/resource/application'
|
const prefix = '/system/resource/application'
|
||||||
|
|
||||||
|
|||||||
@ -30,9 +30,10 @@ const getModelListPage: (
|
|||||||
*/
|
*/
|
||||||
const getSelectModelList: (
|
const getSelectModelList: (
|
||||||
data?: ListModelRequest,
|
data?: ListModelRequest,
|
||||||
|
workspace_id?: string,
|
||||||
loading?: Ref<boolean>,
|
loading?: Ref<boolean>,
|
||||||
) => Promise<Result<Array<Model>>> = (data, loading) => {
|
) => Promise<Result<Array<Model>>> = (data, workspace_id, loading) => {
|
||||||
return get(`${prefix}/model_list`, data, loading).then((ok) => {
|
return get(`${prefix}/workspace/${workspace_id}/model/model_list`, data, loading).then((ok) => {
|
||||||
return {
|
return {
|
||||||
...ok,
|
...ok,
|
||||||
data: [
|
data: [
|
||||||
|
|||||||
@ -288,4 +288,5 @@ export default {
|
|||||||
putBatchGenerateRelated,
|
putBatchGenerateRelated,
|
||||||
putMigrateMulParagraph,
|
putMigrateMulParagraph,
|
||||||
putDisassociationProblem,
|
putDisassociationProblem,
|
||||||
|
putAdjustPosition,
|
||||||
}
|
}
|
||||||
|
|||||||
@ -288,4 +288,5 @@ export default {
|
|||||||
putBatchGenerateRelated,
|
putBatchGenerateRelated,
|
||||||
putMigrateMulParagraph,
|
putMigrateMulParagraph,
|
||||||
putDisassociationProblem,
|
putDisassociationProblem,
|
||||||
|
putAdjustPosition,
|
||||||
}
|
}
|
||||||
|
|||||||
@ -40,4 +40,24 @@ export default {
|
|||||||
])
|
])
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
'app-admin-operation': {
|
||||||
|
iconReader: () => {
|
||||||
|
return h('i', [
|
||||||
|
h(
|
||||||
|
'svg',
|
||||||
|
{
|
||||||
|
viewBox: '0 0 1024 1024',
|
||||||
|
version: '1.1',
|
||||||
|
xmlns: 'http://www.w3.org/2000/svg',
|
||||||
|
},
|
||||||
|
[
|
||||||
|
h('path', {
|
||||||
|
d: 'M805.290667 298.666667a170.752 170.752 0 0 1-330.581334 0H112.682667c-9.514667 0-12.970667-1.024-16.426667-2.858667a19.370667 19.370667 0 0 1-8.106667-8.106667C86.357333 284.330667 85.333333 280.832 85.333333 271.36V240.64c0-9.472 0.981333-12.928 2.858667-16.426667a19.370667 19.370667 0 0 1 8.064-8.064C99.712 214.314667 103.168 213.333333 112.64 213.333333h362.026667a170.752 170.752 0 0 1 330.581333 0h106.026667c9.514667 0 12.970667 0.981333 16.426666 2.816a19.370667 19.370667 0 0 1 8.106667 8.106667c1.834667 3.413333 2.816 6.912 2.816 16.384v30.677333c0 9.472-0.981333 12.928-2.858667 16.426667a19.370667 19.370667 0 0 1-8.064 8.064c-3.456 1.834667-6.912 2.858667-16.426666 2.858667h-106.026667zM640 341.333333a85.333333 85.333333 0 1 0 0-170.666666 85.333333 85.333333 0 0 0 0 170.666666zM549.290667 810.666667a170.752 170.752 0 0 1-330.581334 0H112.682667c-9.514667 0-12.970667-1.024-16.426667-2.858667a19.370667 19.370667 0 0 1-8.106667-8.106667c-1.834667-3.413333-2.816-6.912-2.816-16.384v-30.677333c0-9.472 0.981333-12.928 2.858667-16.426667a19.370667 19.370667 0 0 1 8.064-8.064c3.456-1.834667 6.912-2.816 16.426667-2.816h106.026666a170.752 170.752 0 0 1 330.581334 0h362.026666c9.514667 0 12.970667 0.981333 16.426667 2.816a19.370667 19.370667 0 0 1 8.106667 8.106667c1.834667 3.413333 2.816 6.912 2.816 16.384v30.634667c0 9.514667-0.981333 12.970667-2.858667 16.469333a19.370667 19.370667 0 0 1-8.064 8.064c-3.456 1.834667-6.912 2.858667-16.426667 2.858667h-362.026666zM384 853.333333a85.333333 85.333333 0 1 0 0-170.666666 85.333333 85.333333 0 0 0 0 170.666666z',
|
||||||
|
fill: 'currentColor',
|
||||||
|
}),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
])
|
||||||
|
},
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|||||||
@ -77,6 +77,7 @@ import { groupBy } from 'lodash'
|
|||||||
import { MsgSuccess } from '@/utils/message'
|
import { MsgSuccess } from '@/utils/message'
|
||||||
import { t } from '@/locales'
|
import { t } from '@/locales'
|
||||||
import type { FormInstance } from 'element-plus'
|
import type { FormInstance } from 'element-plus'
|
||||||
|
import modelResourceApi from '@/api/system-resource-management/model'
|
||||||
import { loadSharedApi } from '@/utils/dynamics-api/shared-api'
|
import { loadSharedApi } from '@/utils/dynamics-api/shared-api'
|
||||||
|
|
||||||
const props = defineProps<{
|
const props = defineProps<{
|
||||||
@ -104,7 +105,7 @@ const stateMap = {
|
|||||||
error: ['0', '1', '3', '4', '5', 'n'],
|
error: ['0', '1', '3', '4', '5', 'n'],
|
||||||
}
|
}
|
||||||
const FormRef = ref()
|
const FormRef = ref()
|
||||||
const knowledgeId = ref<string>()
|
const currentKnowledge = ref<any>(null)
|
||||||
const userId = user.userInfo?.id as string
|
const userId = user.userInfo?.id as string
|
||||||
const form = ref(prompt.get(userId))
|
const form = ref(prompt.get(userId))
|
||||||
const rules = reactive({
|
const rules = reactive({
|
||||||
@ -131,8 +132,8 @@ watch(dialogVisible, (bool) => {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
const open = (ids: string[], type: string, _knowledgeId?: string) => {
|
const open = (ids: string[], type: string, _knowledge?: any) => {
|
||||||
knowledgeId.value = _knowledgeId
|
currentKnowledge.value = _knowledge
|
||||||
getModelFn()
|
getModelFn()
|
||||||
idList.value = ids
|
idList.value = ids
|
||||||
apiSubmitType.value = type
|
apiSubmitType.value = type
|
||||||
@ -178,7 +179,7 @@ const submitHandle = async (formEl: FormInstance) => {
|
|||||||
state_list: stateMap[state.value],
|
state_list: stateMap[state.value],
|
||||||
}
|
}
|
||||||
loadSharedApi({ type: 'knowledge', systemType: props.apiType })
|
loadSharedApi({ type: 'knowledge', systemType: props.apiType })
|
||||||
.putGenerateRelated(id ? id : knowledgeId.value, data, loading)
|
.putGenerateRelated(id ? id : currentKnowledge.value?.id, data, loading)
|
||||||
.then(() => {
|
.then(() => {
|
||||||
MsgSuccess(t('views.document.generateQuestion.successMessage'))
|
MsgSuccess(t('views.document.generateQuestion.successMessage'))
|
||||||
dialogVisible.value = false
|
dialogVisible.value = false
|
||||||
@ -190,15 +191,27 @@ const submitHandle = async (formEl: FormInstance) => {
|
|||||||
|
|
||||||
function getModelFn() {
|
function getModelFn() {
|
||||||
loading.value = true
|
loading.value = true
|
||||||
loadSharedApi({ type: 'model', systemType: props.apiType })
|
if (props.apiType === 'systemManage') {
|
||||||
.getSelectModelList({ model_type: 'LLM' })
|
modelResourceApi
|
||||||
.then((res: any) => {
|
.getSelectModelList({ model_type: 'LLM' }, currentKnowledge.value?.workspace_id)
|
||||||
modelOptions.value = groupBy(res?.data, 'provider')
|
.then((res: any) => {
|
||||||
loading.value = false
|
modelOptions.value = groupBy(res?.data, 'provider')
|
||||||
})
|
loading.value = false
|
||||||
.catch(() => {
|
})
|
||||||
loading.value = false
|
.catch(() => {
|
||||||
})
|
loading.value = false
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
loadSharedApi({ type: 'model', systemType: props.apiType })
|
||||||
|
.getSelectModelList({ model_type: 'LLM' })
|
||||||
|
.then((res: any) => {
|
||||||
|
modelOptions.value = groupBy(res?.data, 'provider')
|
||||||
|
loading.value = false
|
||||||
|
})
|
||||||
|
.catch(() => {
|
||||||
|
loading.value = false
|
||||||
|
})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
defineExpose({ open, dialogVisible })
|
defineExpose({ open, dialogVisible })
|
||||||
|
|||||||
@ -36,13 +36,13 @@ const route = useRoute()
|
|||||||
const {
|
const {
|
||||||
meta: { activeMenu },
|
meta: { activeMenu },
|
||||||
params: { id, folderId },
|
params: { id, folderId },
|
||||||
query: { isShared },
|
query: { isShared, type },
|
||||||
} = route as any
|
} = route as any
|
||||||
|
|
||||||
const apiType = computed(() => {
|
const apiType = computed(() => {
|
||||||
if (route.path.includes('shared')) {
|
if (route.path.includes('shared')) {
|
||||||
return 'systemShare'
|
return 'systemShare'
|
||||||
} else if (route.path.includes('resource-management')) {
|
} else if (route.path.includes('resource-management') || type === 'systemManage') {
|
||||||
return 'systemManage'
|
return 'systemManage'
|
||||||
} else {
|
} else {
|
||||||
return 'workspace'
|
return 'workspace'
|
||||||
@ -71,7 +71,7 @@ const isKnowledge = computed(() => {
|
|||||||
const toBackPath = computed(() => {
|
const toBackPath = computed(() => {
|
||||||
if (route.path.includes('shared')) {
|
if (route.path.includes('shared')) {
|
||||||
return '/system/shared' + activeMenu
|
return '/system/shared' + activeMenu
|
||||||
} else if (route.path.includes('resource-management')) {
|
} else if (route.path.includes('resource-management') || type === 'systemManage') {
|
||||||
return '/system/resource-management' + activeMenu
|
return '/system/resource-management' + activeMenu
|
||||||
} else {
|
} else {
|
||||||
return activeMenu
|
return activeMenu
|
||||||
|
|||||||
@ -36,7 +36,7 @@ const {
|
|||||||
query: { type },
|
query: { type },
|
||||||
} = route as any
|
} = route as any
|
||||||
const isShared = computed(() => {
|
const isShared = computed(() => {
|
||||||
return folderId === 'shared' || type === 'systemShare'
|
return folderId === 'shared' || type === 'systemShare' || type === 'systemManage'
|
||||||
})
|
})
|
||||||
const { theme, user } = useStore()
|
const { theme, user } = useStore()
|
||||||
const isDefaultTheme = computed(() => {
|
const isDefaultTheme = computed(() => {
|
||||||
|
|||||||
@ -15,7 +15,7 @@ const {
|
|||||||
query: { type },
|
query: { type },
|
||||||
} = route as any
|
} = route as any
|
||||||
const isShared = computed(() => {
|
const isShared = computed(() => {
|
||||||
return folderId === 'shared' || type === 'systemShare'
|
return folderId === 'shared' || type === 'systemShare' || type === 'systemManage'
|
||||||
})
|
})
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|||||||
@ -114,7 +114,7 @@ export default {
|
|||||||
member: 'Member',
|
member: 'Member',
|
||||||
permissionSetting: 'Permission Setting',
|
permissionSetting: 'Permission Setting',
|
||||||
setting: {
|
setting: {
|
||||||
management: ' management',
|
management: 'management',
|
||||||
check: 'check',
|
check: 'check',
|
||||||
authorization: 'authorization',
|
authorization: 'authorization',
|
||||||
},
|
},
|
||||||
@ -126,5 +126,6 @@ export default {
|
|||||||
resource_management: {
|
resource_management: {
|
||||||
label: 'Resource Management',
|
label: 'Resource Management',
|
||||||
type: 'Type',
|
type: 'Type',
|
||||||
|
management: 'management',
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|||||||
@ -126,5 +126,6 @@ export default {
|
|||||||
resource_management: {
|
resource_management: {
|
||||||
label: '资源管理',
|
label: '资源管理',
|
||||||
type: '类型',
|
type: '类型',
|
||||||
|
management: '管理',
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|||||||
@ -125,6 +125,7 @@ export default {
|
|||||||
},
|
},
|
||||||
resource_management: {
|
resource_management: {
|
||||||
label: '資源管理',
|
label: '資源管理',
|
||||||
type: '类型',
|
type: '類型',
|
||||||
|
management: '管理',
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|||||||
@ -34,7 +34,7 @@ const ModelRouter = {
|
|||||||
hidden: true,
|
hidden: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: '/knowledge/import',
|
path: '/knowledge/import/:folderId',
|
||||||
name: 'ImportLarkDocument',
|
name: 'ImportLarkDocument',
|
||||||
meta: { activeMenu: '/knowledge' },
|
meta: { activeMenu: '/knowledge' },
|
||||||
component: () => import('@/views/document/ImportLarkDocument.vue'),
|
component: () => import('@/views/document/ImportLarkDocument.vue'),
|
||||||
|
|||||||
@ -16,6 +16,11 @@ import chatUserSystemShareApi from '@/api/system-shared/chat-user'
|
|||||||
import workspaceApi from '@/api/workspace/workspace'
|
import workspaceApi from '@/api/workspace/workspace'
|
||||||
import systemUserApi from '@/api/user/user'
|
import systemUserApi from '@/api/user/user'
|
||||||
import ToolResourceApi from '@/api/system-resource-management/tool'
|
import ToolResourceApi from '@/api/system-resource-management/tool'
|
||||||
|
import knowledgeResourceApi from '@/api/system-resource-management/knowledge'
|
||||||
|
import documentResourceApi from '@/api/system-resource-management/document'
|
||||||
|
import paragraphResourceApi from '@/api/system-resource-management/paragraph'
|
||||||
|
import problemResourceApi from '@/api/system-resource-management/problem'
|
||||||
|
import modelResourceApi from '@/api/system-resource-management/model'
|
||||||
|
|
||||||
// 普通 API
|
// 普通 API
|
||||||
const workspaceApiMap = {
|
const workspaceApiMap = {
|
||||||
@ -43,8 +48,11 @@ const systemShareApiMap = {
|
|||||||
|
|
||||||
// 资源管理 API
|
// 资源管理 API
|
||||||
const systemManageApiMap = {
|
const systemManageApiMap = {
|
||||||
// knowledge: knowledgeWorkspaceApi,
|
knowledge: knowledgeResourceApi,
|
||||||
// model: modelWorkspaceApi,
|
document: documentResourceApi,
|
||||||
|
paragraph: paragraphResourceApi,
|
||||||
|
problem: problemResourceApi,
|
||||||
|
model: modelResourceApi,
|
||||||
tool: ToolResourceApi,
|
tool: ToolResourceApi,
|
||||||
} as any
|
} as any
|
||||||
|
|
||||||
@ -52,7 +60,7 @@ const data = {
|
|||||||
systemShare: systemShareApiMap,
|
systemShare: systemShareApiMap,
|
||||||
workspace: workspaceApiMap,
|
workspace: workspaceApiMap,
|
||||||
systemManage: systemManageApiMap,
|
systemManage: systemManageApiMap,
|
||||||
workspaceShare: workspaceApiMap
|
workspaceShare: workspaceApiMap,
|
||||||
}
|
}
|
||||||
/** 动态导入 API 模块的函数
|
/** 动态导入 API 模块的函数
|
||||||
* loadSharedApi('knowledge', true,'systemShare')
|
* loadSharedApi('knowledge', true,'systemShare')
|
||||||
|
|||||||
@ -219,7 +219,7 @@ const submit = async (formEl: FormInstance | undefined) => {
|
|||||||
...{
|
...{
|
||||||
source_url: form.value.source_url,
|
source_url: form.value.source_url,
|
||||||
selector: form.value.selector,
|
selector: form.value.selector,
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
loadSharedApi({ type: 'document', systemType: apiType.value })
|
loadSharedApi({ type: 'document', systemType: apiType.value })
|
||||||
|
|||||||
@ -29,7 +29,7 @@
|
|||||||
type="primary"
|
type="primary"
|
||||||
@click="
|
@click="
|
||||||
router.push({
|
router.push({
|
||||||
path: `/knowledge/import`,
|
path: `/knowledge/import/${folderId}`,
|
||||||
query: {
|
query: {
|
||||||
id: id,
|
id: id,
|
||||||
folder_token: knowledgeDetail?.meta.folder_token,
|
folder_token: knowledgeDetail?.meta.folder_token,
|
||||||
@ -56,9 +56,7 @@
|
|||||||
v-if="permissionPrecise.doc_migrate(id)"
|
v-if="permissionPrecise.doc_migrate(id)"
|
||||||
>{{ $t('views.document.setting.migration') }}
|
>{{ $t('views.document.setting.migration') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
<el-dropdown
|
<el-dropdown v-if="MoreFilledPermission0(id)">
|
||||||
v-if="MoreFilledPermission0(id)"
|
|
||||||
>
|
|
||||||
<el-button class="ml-12 mr-12">
|
<el-button class="ml-12 mr-12">
|
||||||
<el-icon><MoreFilled /></el-icon>
|
<el-icon><MoreFilled /></el-icon>
|
||||||
</el-button>
|
</el-button>
|
||||||
@ -422,9 +420,7 @@
|
|||||||
</span>
|
</span>
|
||||||
</el-tooltip>
|
</el-tooltip>
|
||||||
<span @click.stop>
|
<span @click.stop>
|
||||||
<el-dropdown trigger="click"
|
<el-dropdown trigger="click" v-if="MoreFilledPermission1(id)">
|
||||||
v-if="MoreFilledPermission1(id)"
|
|
||||||
>
|
|
||||||
<el-button text type="primary">
|
<el-button text type="primary">
|
||||||
<el-icon><MoreFilled /></el-icon>
|
<el-icon><MoreFilled /></el-icon>
|
||||||
</el-button>
|
</el-button>
|
||||||
@ -535,9 +531,7 @@
|
|||||||
</span>
|
</span>
|
||||||
</el-tooltip>
|
</el-tooltip>
|
||||||
<span @click.stop>
|
<span @click.stop>
|
||||||
<el-dropdown trigger="click"
|
<el-dropdown trigger="click" v-if="MoreFilledPermission2(id)">
|
||||||
v-if="MoreFilledPermission2(id)"
|
|
||||||
>
|
|
||||||
<el-button text type="primary">
|
<el-button text type="primary">
|
||||||
<el-icon><MoreFilled /></el-icon>
|
<el-icon><MoreFilled /></el-icon>
|
||||||
</el-button>
|
</el-button>
|
||||||
@ -704,22 +698,32 @@ const permissionPrecise = computed(() => {
|
|||||||
})
|
})
|
||||||
|
|
||||||
const MoreFilledPermission0 = (id: string) => {
|
const MoreFilledPermission0 = (id: string) => {
|
||||||
return permissionPrecise.value.doc_edit(id) ||
|
return (
|
||||||
(knowledgeDetail?.value.type === 1 && permissionPrecise.value.doc_sync(id)) ||
|
permissionPrecise.value.doc_edit(id) ||
|
||||||
(knowledgeDetail?.value.type === 2 && permissionPrecise.value.doc_sync(id)) ||
|
(knowledgeDetail?.value.type === 1 && permissionPrecise.value.doc_sync(id)) ||
|
||||||
permissionPrecise.value.doc_delete(id)
|
(knowledgeDetail?.value.type === 2 && permissionPrecise.value.doc_sync(id)) ||
|
||||||
|
permissionPrecise.value.doc_delete(id)
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
const MoreFilledPermission1 = (id: string) => {
|
const MoreFilledPermission1 = (id: string) => {
|
||||||
return permissionPrecise.value.doc_generate(id) || permissionPrecise.value.doc_migrate(id) ||
|
return (
|
||||||
permissionPrecise.value.doc_export(id) || permissionPrecise.value.doc_download(id) ||
|
permissionPrecise.value.doc_generate(id) ||
|
||||||
permissionPrecise.value.doc_delete(id)
|
permissionPrecise.value.doc_migrate(id) ||
|
||||||
|
permissionPrecise.value.doc_export(id) ||
|
||||||
|
permissionPrecise.value.doc_download(id) ||
|
||||||
|
permissionPrecise.value.doc_delete(id)
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
const MoreFilledPermission2 = (id: string) => {
|
const MoreFilledPermission2 = (id: string) => {
|
||||||
return permissionPrecise.value.doc_edit(id) || permissionPrecise.value.doc_generate(id) ||
|
return (
|
||||||
permissionPrecise.value.doc_migrate(id) || permissionPrecise.value.doc_export(id) ||
|
permissionPrecise.value.doc_edit(id) ||
|
||||||
permissionPrecise.value.doc_delete(id)
|
permissionPrecise.value.doc_generate(id) ||
|
||||||
|
permissionPrecise.value.doc_migrate(id) ||
|
||||||
|
permissionPrecise.value.doc_export(id) ||
|
||||||
|
permissionPrecise.value.doc_delete(id)
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
const getTaskState = (status: string, taskType: number) => {
|
const getTaskState = (status: string, taskType: number) => {
|
||||||
|
|||||||
@ -17,12 +17,19 @@
|
|||||||
</template>
|
</template>
|
||||||
<template #extra>
|
<template #extra>
|
||||||
<el-button
|
<el-button
|
||||||
|
v-if="apiType === 'workspace'"
|
||||||
@click="
|
@click="
|
||||||
router.push({
|
router.push({
|
||||||
path: `/knowledge`,
|
path: `/knowledge`,
|
||||||
query: {
|
})
|
||||||
type: apiType,
|
"
|
||||||
},
|
>{{ $t('views.knowledge.ResultSuccess.buttons.toknowledge') }}</el-button
|
||||||
|
>
|
||||||
|
<el-button
|
||||||
|
v-else
|
||||||
|
@click="
|
||||||
|
router.push({
|
||||||
|
path: `/system/${folderId}/knowledge`,
|
||||||
})
|
})
|
||||||
"
|
"
|
||||||
>{{ $t('views.knowledge.ResultSuccess.buttons.toknowledge') }}</el-button
|
>{{ $t('views.knowledge.ResultSuccess.buttons.toknowledge') }}</el-button
|
||||||
|
|||||||
@ -131,7 +131,7 @@ const documentsFiles = computed(() => knowledge.documentsFiles)
|
|||||||
const splitPatternList = ref<Array<KeyValue<string, string>>>([])
|
const splitPatternList = ref<Array<KeyValue<string, string>>>([])
|
||||||
const route = useRoute()
|
const route = useRoute()
|
||||||
const {
|
const {
|
||||||
query: { id }, // id为knowledgeID
|
query: { id}, // id为knowledgeID
|
||||||
} = route as any
|
} = route as any
|
||||||
|
|
||||||
const apiType = computed(() => {
|
const apiType = computed(() => {
|
||||||
|
|||||||
@ -307,7 +307,7 @@ const onExceed = () => {
|
|||||||
MsgError(
|
MsgError(
|
||||||
t('views.document.tip.fileLimitCountTip1') +
|
t('views.document.tip.fileLimitCountTip1') +
|
||||||
file_count_limit.value +
|
file_count_limit.value +
|
||||||
t('views.document.tip.fileLimitCountTip2')
|
t('views.document.tip.fileLimitCountTip2'),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -192,12 +192,13 @@ import { loadSharedApi } from '@/utils/dynamics-api/shared-api'
|
|||||||
const route = useRoute()
|
const route = useRoute()
|
||||||
const {
|
const {
|
||||||
params: { id, folderId },
|
params: { id, folderId },
|
||||||
|
query: { type },
|
||||||
} = route as any
|
} = route as any
|
||||||
|
|
||||||
const apiType = computed(() => {
|
const apiType = computed(() => {
|
||||||
if (route.path.includes('shared')) {
|
if (route.path.includes('shared')) {
|
||||||
return 'systemShare'
|
return 'systemShare'
|
||||||
} else if (route.path.includes('resource-management')) {
|
} else if (route.path.includes('resource-management') || type === 'systemManage') {
|
||||||
return 'systemManage'
|
return 'systemManage'
|
||||||
} else {
|
} else {
|
||||||
return 'workspace'
|
return 'workspace'
|
||||||
|
|||||||
@ -377,8 +377,8 @@ const isSystemShare = computed(() => {
|
|||||||
|
|
||||||
const MoreFilledPermission = (item: any) => {
|
const MoreFilledPermission = (item: any) => {
|
||||||
return (item.type === 1 && permissionPrecise.value.sync(item.id)) ||
|
return (item.type === 1 && permissionPrecise.value.sync(item.id)) ||
|
||||||
permissionPrecise.value.vector(item.id) || permissionPrecise.value.generate(item.id) ||
|
permissionPrecise.value.vector(item.id) || permissionPrecise.value.generate(item.id) ||
|
||||||
(permissionPrecise.value.edit(item.id) && apiType.value) === 'workspace' ||
|
(permissionPrecise.value.edit(item.id) && apiType.value) === 'workspace' ||
|
||||||
permissionPrecise.value.export(item.id) || permissionPrecise.value.delete(item.id) || isSystemShare.value
|
permissionPrecise.value.export(item.id) || permissionPrecise.value.delete(item.id) || isSystemShare.value
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -446,7 +446,7 @@ const search_type_change = () => {
|
|||||||
const GenerateRelatedDialogRef = ref<InstanceType<typeof GenerateRelatedDialog>>()
|
const GenerateRelatedDialogRef = ref<InstanceType<typeof GenerateRelatedDialog>>()
|
||||||
function openGenerateDialog(row: any) {
|
function openGenerateDialog(row: any) {
|
||||||
if (GenerateRelatedDialogRef.value) {
|
if (GenerateRelatedDialogRef.value) {
|
||||||
GenerateRelatedDialogRef.value.open([], 'knowledge', row.id)
|
GenerateRelatedDialogRef.value.open([], 'knowledge', row)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -42,10 +42,13 @@ import { loadSharedApi } from '@/utils/dynamics-api/shared-api'
|
|||||||
import { t } from '@/locales'
|
import { t } from '@/locales'
|
||||||
|
|
||||||
const route = useRoute()
|
const route = useRoute()
|
||||||
|
const {
|
||||||
|
query: { type },
|
||||||
|
} = route
|
||||||
const apiType = computed(() => {
|
const apiType = computed(() => {
|
||||||
if (route.path.includes('shared')) {
|
if (route.path.includes('shared')) {
|
||||||
return 'systemShare'
|
return 'systemShare'
|
||||||
} else if (route.path.includes('resource-management')) {
|
} else if (route.path.includes('resource-management') || type === 'systemManage') {
|
||||||
return 'systemManage'
|
return 'systemManage'
|
||||||
} else {
|
} else {
|
||||||
return 'workspace'
|
return 'workspace'
|
||||||
|
|||||||
@ -128,7 +128,6 @@ import type { FormField } from '@/components/dynamics-form/type'
|
|||||||
import DynamicsForm from '@/components/dynamics-form/index.vue'
|
import DynamicsForm from '@/components/dynamics-form/index.vue'
|
||||||
import type { FormRules } from 'element-plus'
|
import type { FormRules } from 'element-plus'
|
||||||
import { MsgSuccess } from '@/utils/message'
|
import { MsgSuccess } from '@/utils/message'
|
||||||
import { PermissionType, PermissionDesc } from '@/enums/model'
|
|
||||||
import { t } from '@/locales'
|
import { t } from '@/locales'
|
||||||
import { loadSharedApi } from '@/utils/dynamics-api/shared-api'
|
import { loadSharedApi } from '@/utils/dynamics-api/shared-api'
|
||||||
|
|
||||||
|
|||||||
@ -64,9 +64,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<template #mouseEnter
|
<template #mouseEnter v-if="MoreFilledPermission(model.id)">
|
||||||
v-if="MoreFilledPermission(model.id)"
|
|
||||||
>
|
|
||||||
<el-dropdown trigger="click" v-if="!isShared">
|
<el-dropdown trigger="click" v-if="!isShared">
|
||||||
<el-button text @click.stop>
|
<el-button text @click.stop>
|
||||||
<el-icon>
|
<el-icon>
|
||||||
@ -117,7 +115,7 @@
|
|||||||
</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" />
|
||||||
<AuthorizedWorkspace
|
<AuthorizedWorkspace
|
||||||
ref="AuthorizedWorkspaceDialogRef"
|
ref="AuthorizedWorkspaceDialogRef"
|
||||||
v-if="isSystemShare"
|
v-if="isSystemShare"
|
||||||
@ -152,7 +150,7 @@ const props = defineProps<{
|
|||||||
const apiType = props.apiType
|
const apiType = props.apiType
|
||||||
|
|
||||||
const isSystemShare = computed(() => {
|
const isSystemShare = computed(() => {
|
||||||
return apiType==='systemShare'
|
return apiType === 'systemShare'
|
||||||
})
|
})
|
||||||
|
|
||||||
const permissionPrecise = computed(() => {
|
const permissionPrecise = computed(() => {
|
||||||
@ -160,8 +158,9 @@ const permissionPrecise = computed(() => {
|
|||||||
})
|
})
|
||||||
|
|
||||||
const MoreFilledPermission = (id: any) => {
|
const MoreFilledPermission = (id: any) => {
|
||||||
return permissionPrecise.value.modify(id) ||
|
return (
|
||||||
permissionPrecise.value.delete(id) || isSystemShare.value
|
permissionPrecise.value.modify(id) || permissionPrecise.value.delete(id) || isSystemShare.value
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
const downModel = ref<Model>()
|
const downModel = ref<Model>()
|
||||||
@ -255,7 +254,7 @@ const closeInterval = () => {
|
|||||||
|
|
||||||
const paramSettingRef = ref<InstanceType<typeof ParamSettingDialog>>()
|
const paramSettingRef = ref<InstanceType<typeof ParamSettingDialog>>()
|
||||||
const openParamSetting = () => {
|
const openParamSetting = () => {
|
||||||
paramSettingRef.value?.open()
|
paramSettingRef.value?.open(props.model)
|
||||||
}
|
}
|
||||||
|
|
||||||
const AuthorizedWorkspaceDialogRef = ref()
|
const AuthorizedWorkspaceDialogRef = ref()
|
||||||
|
|||||||
@ -89,9 +89,6 @@ import { MsgError, MsgSuccess } from '@/utils/message'
|
|||||||
import { input_type_list } from '@/components/dynamics-form/constructor/data'
|
import { input_type_list } from '@/components/dynamics-form/constructor/data'
|
||||||
import { t } from '@/locales'
|
import { t } from '@/locales'
|
||||||
import { loadSharedApi } from '@/utils/dynamics-api/shared-api'
|
import { loadSharedApi } from '@/utils/dynamics-api/shared-api'
|
||||||
const props = defineProps<{
|
|
||||||
model: Model
|
|
||||||
}>()
|
|
||||||
|
|
||||||
const route = useRoute()
|
const route = useRoute()
|
||||||
|
|
||||||
@ -108,12 +105,14 @@ const loading = ref<boolean>(false)
|
|||||||
const dialogVisible = ref<boolean>(false)
|
const dialogVisible = ref<boolean>(false)
|
||||||
const modelParamsForm = ref<any[]>([])
|
const modelParamsForm = ref<any[]>([])
|
||||||
const AddParamRef = ref()
|
const AddParamRef = ref()
|
||||||
|
const currentModel = ref<Model | null>(null)
|
||||||
|
|
||||||
const open = () => {
|
const open = (model: Model) => {
|
||||||
|
currentModel.value = model
|
||||||
dialogVisible.value = true
|
dialogVisible.value = true
|
||||||
loading.value = true
|
loading.value = true
|
||||||
loadSharedApi({ type: 'model', systemType: apiType.value })
|
loadSharedApi({ type: 'model', systemType: apiType.value })
|
||||||
.getModelParamsForm(props.model.id, loading)
|
.getModelParamsForm(model.id, loading)
|
||||||
.then((ok: any) => {
|
.then((ok: any) => {
|
||||||
loading.value = false
|
loading.value = false
|
||||||
modelParamsForm.value = ok.data
|
modelParamsForm.value = ok.data
|
||||||
@ -164,8 +163,11 @@ function refresh(data: any, index: any) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function submit() {
|
function submit() {
|
||||||
|
if (!currentModel.value) {
|
||||||
|
return
|
||||||
|
}
|
||||||
loadSharedApi({ type: 'model', systemType: apiType.value })
|
loadSharedApi({ type: 'model', systemType: apiType.value })
|
||||||
.updateModelParamsForm(props.model.id, modelParamsForm.value, loading)
|
.updateModelParamsForm(currentModel.value.id, modelParamsForm.value, loading)
|
||||||
.then((ok: any) => {
|
.then((ok: any) => {
|
||||||
MsgSuccess(t('views.model.tip.saveSuccessMessage'))
|
MsgSuccess(t('views.model.tip.saveSuccessMessage'))
|
||||||
close()
|
close()
|
||||||
|
|||||||
@ -30,7 +30,10 @@
|
|||||||
:content="$t('views.problem.setting.cancelRelated')"
|
:content="$t('views.problem.setting.cancelRelated')"
|
||||||
placement="top"
|
placement="top"
|
||||||
>
|
>
|
||||||
<el-button type="primary" text @click.stop="disassociation(item)"
|
<el-button
|
||||||
|
type="primary"
|
||||||
|
text
|
||||||
|
@click.stop="disassociation(item)"
|
||||||
v-if="permissionPrecise.doc_edit(id as string)"
|
v-if="permissionPrecise.doc_edit(id as string)"
|
||||||
>
|
>
|
||||||
<AppIcon iconName="app-quxiaoguanlian"></AppIcon>
|
<AppIcon iconName="app-quxiaoguanlian"></AppIcon>
|
||||||
@ -67,9 +70,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<template #footer>
|
<template #footer>
|
||||||
<div>
|
<div>
|
||||||
<el-button @click="relateProblem"
|
<el-button @click="relateProblem" v-if="permissionPrecise.doc_edit(id as string)">{{
|
||||||
v-if="permissionPrecise.doc_edit(id as string)"
|
|
||||||
>{{
|
|
||||||
$t('views.problem.relateParagraph.title')
|
$t('views.problem.relateParagraph.title')
|
||||||
}}</el-button>
|
}}</el-button>
|
||||||
<el-button @click="pre" :disabled="pre_disable || loading">{{
|
<el-button @click="pre" :disabled="pre_disable || loading">{{
|
||||||
|
|||||||
@ -51,7 +51,7 @@
|
|||||||
<el-table-column width="220" :label="$t('common.name')" show-overflow-tooltip>
|
<el-table-column width="220" :label="$t('common.name')" show-overflow-tooltip>
|
||||||
<template #default="{ row }">
|
<template #default="{ row }">
|
||||||
<div class="flex align-center">
|
<div class="flex align-center">
|
||||||
<KnowledgeIcon :type="row.type" />
|
<KnowledgeIcon :type="row.type" :size="24" />
|
||||||
<span class="ml-8">
|
<span class="ml-8">
|
||||||
{{ row.name }}
|
{{ row.name }}
|
||||||
</span>
|
</span>
|
||||||
@ -139,22 +139,131 @@
|
|||||||
{{ datetimeFormat(row.create_time) }}
|
{{ datetimeFormat(row.create_time) }}
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
<el-table-column :label="$t('common.operation')" align="left" width="120" fixed="right">
|
||||||
|
<template #default="{ row }">
|
||||||
|
<el-tooltip
|
||||||
|
effect="dark"
|
||||||
|
:content="$t('views.system.resource_management.management')"
|
||||||
|
placement="top"
|
||||||
|
>
|
||||||
|
<span class="mr-8">
|
||||||
|
<el-button
|
||||||
|
type="primary"
|
||||||
|
text
|
||||||
|
:title="$t('views.system.resource_management.management')"
|
||||||
|
@click="
|
||||||
|
router.push({
|
||||||
|
path: `/knowledge/${row.id}/resource-management/document`,
|
||||||
|
})
|
||||||
|
"
|
||||||
|
>
|
||||||
|
<AppIcon iconName="app-admin-operation"></AppIcon>
|
||||||
|
</el-button>
|
||||||
|
</span>
|
||||||
|
</el-tooltip>
|
||||||
|
<el-tooltip
|
||||||
|
effect="dark"
|
||||||
|
:content="$t('views.knowledge.setting.vectorization')"
|
||||||
|
placement="top"
|
||||||
|
>
|
||||||
|
<span class="mr-8">
|
||||||
|
<el-button
|
||||||
|
type="primary"
|
||||||
|
text
|
||||||
|
:title="$t('views.knowledge.setting.vectorization')"
|
||||||
|
@click.stop="reEmbeddingKnowledge(row)"
|
||||||
|
v-if="permissionPrecise.vector(row.id)"
|
||||||
|
>
|
||||||
|
<AppIcon iconName="app-vectorization"></AppIcon>
|
||||||
|
</el-button>
|
||||||
|
</span>
|
||||||
|
</el-tooltip>
|
||||||
|
<el-dropdown trigger="click">
|
||||||
|
<el-button text @click.stop>
|
||||||
|
<el-icon>
|
||||||
|
<MoreFilled />
|
||||||
|
</el-icon>
|
||||||
|
</el-button>
|
||||||
|
<template #dropdown>
|
||||||
|
<el-dropdown-menu>
|
||||||
|
<el-dropdown-item
|
||||||
|
icon="Refresh"
|
||||||
|
@click.stop="syncKnowledge(row)"
|
||||||
|
v-if="row.type === 1 && permissionPrecise.sync(row.id)"
|
||||||
|
>{{ $t('views.knowledge.setting.sync') }}
|
||||||
|
</el-dropdown-item>
|
||||||
|
|
||||||
|
<el-dropdown-item
|
||||||
|
icon="Connection"
|
||||||
|
@click.stop="openGenerateDialog(row)"
|
||||||
|
v-if="permissionPrecise.generate(row.id)"
|
||||||
|
>{{ $t('views.document.generateQuestion.title') }}
|
||||||
|
</el-dropdown-item>
|
||||||
|
<el-dropdown-item
|
||||||
|
icon="Setting"
|
||||||
|
@click="
|
||||||
|
router.push({
|
||||||
|
path: `/knowledge/${row.id}/resource-management/setting`,
|
||||||
|
})
|
||||||
|
"
|
||||||
|
v-if="permissionPrecise.edit(row.id)"
|
||||||
|
>
|
||||||
|
{{ $t('common.setting') }}
|
||||||
|
</el-dropdown-item>
|
||||||
|
<el-dropdown-item
|
||||||
|
@click.stop="exportKnowledge(row)"
|
||||||
|
v-if="permissionPrecise.export(row.id)"
|
||||||
|
>
|
||||||
|
<AppIcon iconName="app-export"></AppIcon
|
||||||
|
>{{ $t('views.document.setting.export') }} Excel
|
||||||
|
</el-dropdown-item>
|
||||||
|
<el-dropdown-item
|
||||||
|
@click.stop="exportZipKnowledge(row)"
|
||||||
|
v-if="permissionPrecise.export(row.id)"
|
||||||
|
>
|
||||||
|
<AppIcon iconName="app-export"></AppIcon
|
||||||
|
>{{ $t('views.document.setting.export') }} ZIP</el-dropdown-item
|
||||||
|
>
|
||||||
|
<el-dropdown-item
|
||||||
|
icon="Delete"
|
||||||
|
type="danger"
|
||||||
|
@click.stop="deleteKnowledge(row)"
|
||||||
|
v-if="permissionPrecise.delete(row.id)"
|
||||||
|
>
|
||||||
|
{{ $t('common.delete') }}</el-dropdown-item
|
||||||
|
>
|
||||||
|
</el-dropdown-menu>
|
||||||
|
</template>
|
||||||
|
</el-dropdown>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
</app-table>
|
</app-table>
|
||||||
</el-card>
|
</el-card>
|
||||||
|
<SyncWebDialog ref="SyncWebDialogRef" />
|
||||||
|
<GenerateRelatedDialog ref="GenerateRelatedDialogRef" apiType="systemManage" />
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { onMounted, ref, reactive, computed } from 'vue'
|
import { onMounted, ref, reactive, computed } from 'vue'
|
||||||
|
import { useRouter, useRoute } from 'vue-router'
|
||||||
import KnowledgeResourceApi from '@/api/system-resource-management/knowledge'
|
import KnowledgeResourceApi from '@/api/system-resource-management/knowledge'
|
||||||
import { t } from '@/locales'
|
import UserApi from '@/api/user/user'
|
||||||
import useStore from '@/stores'
|
import SyncWebDialog from '@/views/knowledge/component/SyncWebDialog.vue'
|
||||||
|
import GenerateRelatedDialog from '@/components/generate-related-dialog/index.vue'
|
||||||
import { datetimeFormat } from '@/utils/time'
|
import { datetimeFormat } from '@/utils/time'
|
||||||
import { loadPermissionApi } from '@/utils/dynamics-api/permission-api.ts'
|
import { loadPermissionApi } from '@/utils/dynamics-api/permission-api.ts'
|
||||||
import UserApi from '@/api/user/user'
|
import permissionMap from '@/permission'
|
||||||
|
import { MsgSuccess, MsgConfirm } from '@/utils/message'
|
||||||
|
import { t } from '@/locales'
|
||||||
|
import useStore from '@/stores'
|
||||||
|
const router = useRouter()
|
||||||
const { user } = useStore()
|
const { user } = useStore()
|
||||||
|
|
||||||
|
const permissionPrecise = computed(() => {
|
||||||
|
return permissionMap['knowledge']['systemManage']
|
||||||
|
})
|
||||||
|
|
||||||
const search_type = ref('name')
|
const search_type = ref('name')
|
||||||
const search_form = ref<any>({
|
const search_form = ref<any>({
|
||||||
name: '',
|
name: '',
|
||||||
@ -169,6 +278,54 @@ const paginationConfig = reactive({
|
|||||||
page_size: 20,
|
page_size: 20,
|
||||||
total: 0,
|
total: 0,
|
||||||
})
|
})
|
||||||
|
|
||||||
|
const exportKnowledge = (item: any) => {
|
||||||
|
KnowledgeResourceApi.exportKnowledge(item.name, item.id, loading).then(() => {
|
||||||
|
MsgSuccess(t('common.exportSuccess'))
|
||||||
|
})
|
||||||
|
}
|
||||||
|
const exportZipKnowledge = (item: any) => {
|
||||||
|
KnowledgeResourceApi.exportZipKnowledge(item.name, item.id, loading).then(() => {
|
||||||
|
MsgSuccess(t('common.exportSuccess'))
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
function deleteKnowledge(row: any) {
|
||||||
|
MsgConfirm(
|
||||||
|
`${t('views.knowledge.delete.confirmTitle')}${row.name} ?`,
|
||||||
|
`${t('views.knowledge.delete.confirmMessage1')} ${row.application_mapping_count} ${t('views.knowledge.delete.confirmMessage2')}`,
|
||||||
|
{
|
||||||
|
confirmButtonText: t('common.confirm'),
|
||||||
|
confirmButtonClass: 'danger',
|
||||||
|
},
|
||||||
|
)
|
||||||
|
.then(() => {
|
||||||
|
KnowledgeResourceApi.delKnowledge(row.id, loading).then(() => {
|
||||||
|
getList()
|
||||||
|
MsgSuccess(t('common.deleteSuccess'))
|
||||||
|
})
|
||||||
|
})
|
||||||
|
.catch(() => {})
|
||||||
|
}
|
||||||
|
|
||||||
|
const GenerateRelatedDialogRef = ref<InstanceType<typeof GenerateRelatedDialog>>()
|
||||||
|
function openGenerateDialog(row: any) {
|
||||||
|
if (GenerateRelatedDialogRef.value) {
|
||||||
|
GenerateRelatedDialogRef.value.open([], 'knowledge', row)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const SyncWebDialogRef = ref()
|
||||||
|
function syncKnowledge(row: any) {
|
||||||
|
SyncWebDialogRef.value.open(row.id)
|
||||||
|
}
|
||||||
|
|
||||||
|
function reEmbeddingKnowledge(row: any) {
|
||||||
|
KnowledgeResourceApi.putReEmbeddingKnowledge(row.id).then(() => {
|
||||||
|
MsgSuccess(t('common.submitSuccess'))
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
const workspaceOptions = ref<any[]>([])
|
const workspaceOptions = ref<any[]>([])
|
||||||
const workspaceVisible = ref(false)
|
const workspaceVisible = ref(false)
|
||||||
const workspaceArr = ref<any[]>([])
|
const workspaceArr = ref<any[]>([])
|
||||||
|
|||||||
@ -161,14 +161,71 @@
|
|||||||
{{ datetimeFormat(row.create_time) }}
|
{{ datetimeFormat(row.create_time) }}
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
<el-table-column :label="$t('common.operation')" align="left" width="120" fixed="right">
|
||||||
|
<template #default="{ row }">
|
||||||
|
<el-tooltip effect="dark" :content="$t('common.modify')" placement="top">
|
||||||
|
<span class="mr-8">
|
||||||
|
<el-button
|
||||||
|
type="primary"
|
||||||
|
text
|
||||||
|
:title="$t('common.modify')"
|
||||||
|
v-if="permissionPrecise.modify(row.id)"
|
||||||
|
@click.stop="openEditModel(row)"
|
||||||
|
>
|
||||||
|
<el-icon><EditPen /></el-icon>
|
||||||
|
</el-button>
|
||||||
|
</span>
|
||||||
|
</el-tooltip>
|
||||||
|
<el-tooltip
|
||||||
|
effect="dark"
|
||||||
|
:content="$t('views.model.modelForm.title.paramSetting')"
|
||||||
|
placement="top"
|
||||||
|
>
|
||||||
|
<span class="mr-8">
|
||||||
|
<el-button
|
||||||
|
type="primary"
|
||||||
|
text
|
||||||
|
:title="$t('views.model.modelForm.title.paramSetting')"
|
||||||
|
v-if="
|
||||||
|
(row.model_type === 'TTS' ||
|
||||||
|
row.model_type === 'LLM' ||
|
||||||
|
row.model_type === 'IMAGE' ||
|
||||||
|
row.model_type === 'TTI') &&
|
||||||
|
permissionPrecise.paramSetting(row.id)
|
||||||
|
"
|
||||||
|
@click.stop="openParamSetting(row)"
|
||||||
|
>
|
||||||
|
<el-icon><Delete /></el-icon>
|
||||||
|
</el-button>
|
||||||
|
</span>
|
||||||
|
</el-tooltip>
|
||||||
|
<el-tooltip effect="dark" :content="$t('common.delete')" placement="top">
|
||||||
|
<span class="mr-8">
|
||||||
|
<el-button
|
||||||
|
type="primary"
|
||||||
|
text
|
||||||
|
:title="$t('common.delete')"
|
||||||
|
v-if="permissionPrecise.delete(row.id)"
|
||||||
|
@click.stop="deleteModel(row)"
|
||||||
|
>
|
||||||
|
<el-icon><Delete /></el-icon>
|
||||||
|
</el-button>
|
||||||
|
</span>
|
||||||
|
</el-tooltip>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
</app-table>
|
</app-table>
|
||||||
</el-card>
|
</el-card>
|
||||||
|
<EditModel ref="editModelRef" @submit="getList"></EditModel>
|
||||||
|
<ParamSettingDialog ref="paramSettingRef" />
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { onBeforeMount, onMounted, ref, reactive, nextTick, computed } from 'vue'
|
import { onBeforeMount, onMounted, ref, reactive, nextTick, computed } from 'vue'
|
||||||
import type { Provider, Model } from '@/api/type/model'
|
import type { Provider, Model } from '@/api/type/model'
|
||||||
|
import EditModel from '@/views/model/component/EditModel.vue'
|
||||||
|
import ParamSettingDialog from '@/views/model/component/ParamSettingDialog.vue'
|
||||||
import ModelResourceApi from '@/api/system-resource-management/model'
|
import ModelResourceApi from '@/api/system-resource-management/model'
|
||||||
import { modelTypeList } from '@/views/model/component/data'
|
import { modelTypeList } from '@/views/model/component/data'
|
||||||
import { modelType } from '@/enums/model'
|
import { modelType } from '@/enums/model'
|
||||||
@ -177,6 +234,8 @@ import useStore from '@/stores'
|
|||||||
import { datetimeFormat } from '@/utils/time'
|
import { datetimeFormat } from '@/utils/time'
|
||||||
import { loadPermissionApi } from '@/utils/dynamics-api/permission-api.ts'
|
import { loadPermissionApi } from '@/utils/dynamics-api/permission-api.ts'
|
||||||
import UserApi from '@/api/user/user.ts'
|
import UserApi from '@/api/user/user.ts'
|
||||||
|
import permissionMap from '@/permission'
|
||||||
|
import { MsgConfirm, MsgSuccess } from '@/utils/message'
|
||||||
|
|
||||||
const { user, model } = useStore()
|
const { user, model } = useStore()
|
||||||
|
|
||||||
@ -192,7 +251,6 @@ const model_search_form = ref<{
|
|||||||
})
|
})
|
||||||
|
|
||||||
const loading = ref(false)
|
const loading = ref(false)
|
||||||
const changeStateloading = ref(false)
|
|
||||||
const modelList = ref<Array<Model>>([])
|
const modelList = ref<Array<Model>>([])
|
||||||
const user_options = ref<any[]>([])
|
const user_options = ref<any[]>([])
|
||||||
const provider_list = ref<Array<Provider>>([])
|
const provider_list = ref<Array<Provider>>([])
|
||||||
@ -203,6 +261,41 @@ const paginationConfig = reactive({
|
|||||||
total: 0,
|
total: 0,
|
||||||
})
|
})
|
||||||
|
|
||||||
|
const deleteModel = (row: any) => {
|
||||||
|
MsgConfirm(
|
||||||
|
`${t('views.model.delete.confirmTitle')}${row.name} ?`,
|
||||||
|
t('views.model.delete.confirmMessage'),
|
||||||
|
{
|
||||||
|
confirmButtonText: t('common.confirm'),
|
||||||
|
confirmButtonClass: 'danger',
|
||||||
|
},
|
||||||
|
)
|
||||||
|
.then(() => {
|
||||||
|
ModelResourceApi.deleteModel(row.id).then(() => {
|
||||||
|
getList()
|
||||||
|
MsgSuccess(t('common.deleteSuccess'))
|
||||||
|
})
|
||||||
|
})
|
||||||
|
.catch(() => {})
|
||||||
|
}
|
||||||
|
|
||||||
|
const paramSettingRef = ref<InstanceType<typeof ParamSettingDialog>>()
|
||||||
|
const openParamSetting = (row: any) => {
|
||||||
|
paramSettingRef.value?.open(row)
|
||||||
|
}
|
||||||
|
|
||||||
|
const editModelRef = ref<InstanceType<typeof EditModel>>()
|
||||||
|
const openEditModel = (row: any) => {
|
||||||
|
const provider = provider_list.value.find((p) => p.provider === row.provider)
|
||||||
|
if (provider) {
|
||||||
|
editModelRef.value?.open(provider, row)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const permissionPrecise = computed(() => {
|
||||||
|
return permissionMap['model']['systemManage']
|
||||||
|
})
|
||||||
|
|
||||||
const workspaceOptions = ref<any[]>([])
|
const workspaceOptions = ref<any[]>([])
|
||||||
const workspaceVisible = ref(false)
|
const workspaceVisible = ref(false)
|
||||||
const workspaceArr = ref<any[]>([])
|
const workspaceArr = ref<any[]>([])
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user