Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -107,7 +107,7 @@ function handleClearConversations() {
<MkDropdownMenu>
<RenameConversation :conversation="conversation" />
<!-- 删除历史对话 -->
<MkDropdownItem divided @click="handleDeleteConversation(conversation)">
<MkDropdownItem @click="handleDeleteConversation(conversation)">
<template #icon><MkIcon name="icon_delete-trash_outlined" /></template>
<span>删除</span>
</MkDropdownItem>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ function handleDeleteApplication() {
</script>

<template>
<MkDropdownItem divided @click="handleDeleteApplication">
<MkDropdownItem @click="handleDeleteApplication">
<template #icon><MkIcon name="icon_delete-trash_outlined" /></template>
<span>{{ label }}</span>
</MkDropdownItem>
Expand Down
12 changes: 3 additions & 9 deletions ui/src/views/document-detail/index.vue
Original file line number Diff line number Diff line change
Expand Up @@ -225,8 +225,8 @@ const paragraphSortDisabled = computed(
batchMode.value ||
createDialogMounted.value ||
editDialogMounted.value ||
paragraphs.value.length < 2||
!knowledgeDocPermission('docEdit')
paragraphs.value.length < 2 ||
!knowledgeDocPermission('docEdit'),
)
const { handleMoveParagraph } = useParagraphSort({
paragraphs,
Expand Down Expand Up @@ -428,19 +428,13 @@ onMounted(() => {
<!-- 展开分段位置菜单 -->
<MoveParagraphAction
label="移动位置"
divided
:disabled="loading"
@move="handleMoveParagraph(paragraph, $event)"
@visible-change="handleParagraphMenuVisibleChange(paragraph.id, 'position', $event)"
v-if="knowledgeDocPermission('docEdit')"
/>
<!-- 删除当前分段 -->
<MkDropdownItem
v-if="knowledgeDocPermission('docDelete')"
divided
:disabled="loading"
@click="handleDeleteParagraph(paragraph)"
>
<MkDropdownItem v-if="knowledgeDocPermission('docDelete')" :disabled="loading" @click="handleDeleteParagraph(paragraph)">
<template #icon><MkIcon name="icon_delete-trash_outlined" /></template>
删除
</MkDropdownItem>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ function handleExportDocuments(method: (typeof exportOptions)[number]['method'])
</script>

<template>
<MkDropdownItem divided @click.prevent.stop class="p-0!">
<MkDropdownItem @click.prevent.stop class="p-0!">
<MkDropdown class="w-full" trigger="hover" placement="right-start">
<!-- 展开批量文档导出菜单 -->
<div class="flex-between w-full gap-2 p-2">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ function handleExportDocument(method: (typeof exportOptions)[number]['method'])
</script>

<template>
<MkDropdownItem divided @click.prevent.stop class="p-0!">
<MkDropdownItem @click.prevent.stop class="p-0!">
<MkDropdown class="w-full" trigger="hover" placement="left-start">
<!-- 展开文档导出菜单 -->
<div class="flex-between w-full gap-2 p-2">
Expand Down
42 changes: 33 additions & 9 deletions ui/src/views/knowledge-detail/library/document/index.vue
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ import { numberFormat } from '@/utils/number'
import { toOrderBy, isWorkFlow } from '@/utils/common'
import { MsgSuccess, MsgWarning } from '@/utils/message'
import { getFileIconUrl } from '@/utils/icon'
import { isWorkspaceResource, isWorkspaceSharedResource,isSystemResource, isSystemSharedResource } from '@/utils/resource-context'
import { isWorkspaceResource, isWorkspaceSharedResource, isSystemResource, isSystemSharedResource } from '@/utils/resource-context'
import ButtonUploadDocument from './upload-document/ButtonUploadDocument.vue'
import ButtonImportDocument from './import-document/ButtonImportDocument.vue'
import ButtonExecutionRecord from './components/ButtonExecutionRecord.vue'
Expand Down Expand Up @@ -51,9 +51,18 @@ import { perm } from '@/permission'
* 知识库「文档」权限判断
*/
type KnowledgeDocPermissionMethod =
| 'docCreate' | 'docEdit' | 'docDelete' | 'docSync'
| 'docExport' | 'docDownload' | 'docVector' | 'docToken'
| 'docGenerate' | 'docMigrate' | 'docTag' | 'docReplace'
| 'docCreate'
| 'docEdit'
| 'docDelete'
| 'docSync'
| 'docExport'
| 'docDownload'
| 'docVector'
| 'docToken'
| 'docGenerate'
| 'docMigrate'
| 'docTag'
| 'docReplace'

function knowledgeDocPermission(method: KnowledgeDocPermissionMethod): boolean {
if (isSystemResource()) return Boolean(perm.knowledge.system[method]())
Expand Down Expand Up @@ -492,7 +501,12 @@ onBeforeUnmount(() => {
<template #default="{ row }: { row: DocumentItem }">
<div class="flex-align-center" @click.stop>
<!-- 启用或禁用文档 -->
<el-switch :model-value="row.is_active" size="small" :disabled="operationLoading || !knowledgeDocPermission('docEdit')" :before-change="() => handleChangeActive(row)" />
<el-switch
:model-value="row.is_active"
size="small"
:disabled="operationLoading || !knowledgeDocPermission('docEdit')"
:before-change="() => handleChangeActive(row)"
/>

<el-divider direction="vertical" class="ml-3! mr-2!" />

Expand Down Expand Up @@ -572,11 +586,23 @@ onBeforeUnmount(() => {
v-if="knowledgeDocPermission('docMigrate')"
/>
<!-- 导出文档 -->
<ExportDocumentAction v-if="knowledgeDocPermission('docExport')" label="导出" :api="resourceApi.document" v-model:loading="operationLoading" :document="row" />
<ExportDocumentAction
v-if="knowledgeDocPermission('docExport')"
label="导出"
:api="resourceApi.document"
v-model:loading="operationLoading"
:document="row"
/>

<template v-if="knowledgeType === KNOWLEDGE_TYPE_KEY.BASE || isWorkFlow(knowledgeType)">
<!-- 下载原文档 -->
<DownloadDocumentAction v-if="knowledgeDocPermission('docDownload')" :api="resourceApi.document" :knowledge-id="knowledgeId" v-model:loading="operationLoading" :document="row" />
<DownloadDocumentAction
v-if="knowledgeDocPermission('docDownload')"
:api="resourceApi.document"
:knowledge-id="knowledgeId"
v-model:loading="operationLoading"
:document="row"
/>
<!-- 替换原文档 -->
<ReplaceDocumentAction
:api="resourceApi.document"
Expand All @@ -589,7 +615,6 @@ onBeforeUnmount(() => {
</template>
<!-- 删除文档 -->
<DeleteDocumentAction
divided
icon="icon_delete-trash_outlined"
:api="resourceApi.document"
:knowledge-id="knowledgeId"
Expand Down Expand Up @@ -697,7 +722,6 @@ onBeforeUnmount(() => {
:document-ids="selectedDocumentIds"
:task-type="DOCUMENT_TASK_TYPE.EMBEDDING"
label="取消向量化"
divided
@refresh="refreshAfterOperation"
/>
<!-- 批量取消生成问题 -->
Expand Down
53 changes: 40 additions & 13 deletions ui/src/views/knowledge-detail/library/image/index.vue
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ import { datetimeFormat } from '@/utils/time'
import { numberFormat } from '@/utils/number'
import { getFileUrl } from '@/utils/common'
import { MsgSuccess } from '@/utils/message'
import { isWorkspaceResource, isWorkspaceSharedResource,isSystemResource, isSystemSharedResource } from '@/utils/resource-context'
import { isWorkspaceResource, isWorkspaceSharedResource, isSystemResource, isSystemSharedResource } from '@/utils/resource-context'
import ButtonUploadImage from './upload-image/ButtonUploadImage.vue'
import { useKnowledgeDetailContext } from '@/views/knowledge-detail/context'
import ParagraphDialog from '@/views/document-detail/paragraph-dialog/ParagraphDialog.vue'
Expand Down Expand Up @@ -47,8 +47,17 @@ defineExpose({ customHeader: true })
* 知识库「图片」权限判断
*/
type KnowledgeImagePermissionMethod =
| 'read' | 'create' | 'edit' | 'delete' | 'download'
| 'generate' | 'vector' | 'migrate' | 'tag' | 'replace' | 'token'
| 'read'
| 'create'
| 'edit'
| 'delete'
| 'download'
| 'generate'
| 'vector'
| 'migrate'
| 'tag'
| 'replace'
| 'token'

function canImage(method: KnowledgeImagePermissionMethod): boolean {
if (isSystemResource()) return Boolean(perm.knowledge.system.image[method]())
Expand Down Expand Up @@ -428,14 +437,19 @@ onBeforeUnmount(() => {
<template #default="{ row }: { row: DocumentItem }">
<div class="flex-align-center" @click.stop>
<!-- 启用或禁用文档 -->
<el-switch :model-value="row.is_active" size="small" :disabled="operationLoading && !canImage('edit')" :before-change="() => handleChangeActive(row)" />
<el-switch
:model-value="row.is_active"
size="small"
:disabled="operationLoading && !canImage('edit')"
:before-change="() => handleChangeActive(row)"
/>

<el-divider direction="vertical" class="ml-3! mr-2!" />

<div class="flex">
<!-- 向量化或取消向量化 -->
<EmbeddingDocumentAction
v-if="canImage('vector')"
v-if="canImage('vector')"
:api="resourceApi.document"
:knowledge-id="knowledgeId"
:document="row"
Expand All @@ -444,7 +458,7 @@ onBeforeUnmount(() => {
/>
<!-- 分词索引或取消分词索引 -->
<TokenizeDocumentAction
v-if="canImage('token')"
v-if="canImage('token')"
:api="resourceApi.document"
:knowledge-id="knowledgeId"
v-model:loading="operationLoading"
Expand All @@ -455,7 +469,7 @@ onBeforeUnmount(() => {
<MkTableMoreDropdown>
<!-- 生成或取消生成问题 -->
<GenerateQuestionsAction
v-if="canImage('generate')"
v-if="canImage('generate')"
:api="resourceApi.document"
v-model:loading="operationLoading"
:knowledge-id="knowledgeId"
Expand Down Expand Up @@ -487,7 +501,14 @@ onBeforeUnmount(() => {
/>

<!-- 替换图片原文件 -->
<ReplaceDocumentAction v-if="canImage('replace')" :api="resourceApi.document" :knowledge-id="knowledgeId" :document="row" v-model:loading="operationLoading" @refresh="refreshAfterOperation" />
<ReplaceDocumentAction
v-if="canImage('replace')"
:api="resourceApi.document"
:knowledge-id="knowledgeId"
:document="row"
v-model:loading="operationLoading"
@refresh="refreshAfterOperation"
/>
<!-- 迁移文档 -->
<MigrateDocumentAction
v-if="canImage('migrate')"
Expand All @@ -501,12 +522,17 @@ onBeforeUnmount(() => {
/>

<!-- 下载原文档 -->
<DownloadDocumentAction v-if="canImage('download')" :api="resourceApi.document" :knowledge-id="knowledgeId" v-model:loading="operationLoading" :document="row" />
<DownloadDocumentAction
v-if="canImage('download')"
:api="resourceApi.document"
:knowledge-id="knowledgeId"
v-model:loading="operationLoading"
:document="row"
/>

<!-- 删除文档 -->
<DeleteDocumentAction
v-if="canImage('delete')"
divided
icon="icon_delete-trash_outlined"
:api="resourceApi.document"
:knowledge-id="knowledgeId"
Expand Down Expand Up @@ -590,18 +616,19 @@ onBeforeUnmount(() => {
/>

<!-- 批量取消向量化 -->
<BatchCancelTaskAction v-if="canImage('vector')"
<BatchCancelTaskAction
v-if="canImage('vector')"
:api="resourceApi.document"
:knowledge-id="knowledgeId"
v-model:loading="operationLoading"
:document-ids="selectedDocumentIds"
:task-type="DOCUMENT_TASK_TYPE.EMBEDDING"
label="取消向量化"
divided
@refresh="refreshAfterOperation"
/>
<!-- 批量取消生成问题 -->
<BatchCancelTaskAction v-if="canImage('generate')"
<BatchCancelTaskAction
v-if="canImage('generate')"
:api="resourceApi.document"
:knowledge-id="knowledgeId"
v-model:loading="operationLoading"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,11 @@ import type SystemSharedKnowledgeApi from '@/api/admin/system/shared-resources/k

defineOptions({ name: 'DeleteKnowledgeAction' })

const props = defineProps<{ api: typeof KnowledgeApi | typeof SystemResourceKnowledgeApi | typeof SystemSharedKnowledgeApi; knowledge: KnowledgeItem; label: string }>()
const props = defineProps<{
api: typeof KnowledgeApi | typeof SystemResourceKnowledgeApi | typeof SystemSharedKnowledgeApi
knowledge: KnowledgeItem
label: string
}>()

const loading = defineModel<boolean>('loading', { default: false })

Expand All @@ -32,7 +36,7 @@ function handleDeleteKnowledge() {
</script>

<template>
<MkDropdownItem divided @click="handleDeleteKnowledge">
<MkDropdownItem @click="handleDeleteKnowledge">
<template #icon><MkIcon name="icon_delete-trash_outlined" /></template>
<span>{{ label }}</span>
</MkDropdownItem>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ function handleExportDialogClosed() {
</script>

<template>
<MkDropdownItem divided @click.prevent.stop class="p-0!">
<MkDropdownItem @click.prevent.stop class="p-0!">
<MkDropdown class="w-full" trigger="hover" placement="right-start" :append-to="exportMenuContainer">
<!-- 展开知识库导出菜单 -->
<div ref="exportTriggerRef" class="flex-between w-full gap-2 p-2">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ function handleDeleteModel() {

<template>
<!-- 删除模型 -->
<MkDropdownItem divided @click="handleDeleteModel">
<MkDropdownItem @click="handleDeleteModel">
<template #icon><MkIcon name="icon_delete-trash_outlined" /></template>
<span>{{ label }}</span>
</MkDropdownItem>
Expand Down
10 changes: 8 additions & 2 deletions ui/src/views/system/chat-management/user-groups/index.vue
Original file line number Diff line number Diff line change
Expand Up @@ -169,7 +169,7 @@ onMounted(() => loadChatUserGroups())
<span>重命名</span>
</MkDropdownItem>
<!-- 删除用户组 -->
<MkDropdownItem v-if="perm.system.chatUserGroup.delete()" divided @click="deleteGroup(row)">
<MkDropdownItem v-if="perm.system.chatUserGroup.delete()" @click="deleteGroup(row)">
<template #icon><MkIcon name="icon_delete-trash_outlined" /></template>
<span>删除</span>
</MkDropdownItem>
Expand Down Expand Up @@ -216,7 +216,13 @@ onMounted(() => loadChatUserGroups())
<el-table-column prop="username" label="用户名" show-overflow-tooltip />
<el-table-column prop="source" label="用户来源">
<template #header>
<MkTableFilter mode="single" v-model="selectedMemberSource" label="用户来源" :options="memberSourceOptions" @change="handleMemberFilterChange" />
<MkTableFilter
mode="single"
v-model="selectedMemberSource"
label="用户来源"
:options="memberSourceOptions"
@change="handleMemberFilterChange"
/>
</template>
<template #default="{ row }">
{{ row.source === LOGIN_METHOD.LOCAL ? '系统用户' : LOGIN_METHOD_LABELS[row.source as LoginMethod] }}
Expand Down
2 changes: 1 addition & 1 deletion ui/src/views/system/chat-management/users/index.vue
Original file line number Diff line number Diff line change
Expand Up @@ -262,7 +262,7 @@ onMounted(() => loadChatUsers())
<!-- 配额设置 -->
<ButtonQuotaSettings v-if="perm.system.chatUser.quotaSetting()" :user-ids="row.id" dropdown @refresh="loadChatUsers()" />
<!-- 删除 -->
<MkDropdownItem v-if="perm.system.chatUser.delete()" divided @click="deleteUser(row)">
<MkDropdownItem v-if="perm.system.chatUser.delete()" @click="deleteUser(row)">
<template #icon>
<MkIcon name="icon_delete-trash_outlined" />
</template>
Expand Down
2 changes: 1 addition & 1 deletion ui/src/views/system/identity/groups/index.vue
Original file line number Diff line number Diff line change
Expand Up @@ -213,7 +213,7 @@ onMounted(() => {
<span>重命名</span>
</MkDropdownItem>
<!-- 删除用户组 -->
<MkDropdownItem v-if="perm.system.userGroup.delete()" divided @click="deleteGroup(row)">
<MkDropdownItem v-if="perm.system.userGroup.delete()" @click="deleteGroup(row)">
<template #icon>
<MkIcon name="icon_delete-trash_outlined" />
</template>
Expand Down
2 changes: 1 addition & 1 deletion ui/src/views/system/identity/roles/index.vue
Original file line number Diff line number Diff line change
Expand Up @@ -138,7 +138,7 @@ onMounted(() => loadRoles())
重命名
</MkDropdownItem>
<!-- 删除 -->
<MkDropdownItem v-if="perm.system.role.delete()" divided @click="handleDeleteRole(role)">
<MkDropdownItem v-if="perm.system.role.delete()" @click="handleDeleteRole(role)">
<template #icon><MkIcon name="icon_delete-trash_outlined" /></template>
删除
</MkDropdownItem>
Expand Down
2 changes: 1 addition & 1 deletion ui/src/views/system/identity/workspaces/index.vue
Original file line number Diff line number Diff line change
Expand Up @@ -210,7 +210,7 @@ onMounted(() => loadWorkspaceOptions())
<span>重命名</span>
</MkDropdownItem>
<!-- 删除工作空间 -->
<MkDropdownItem v-if="perm.system.workspace.delete()" divided @click="handleWorkspaceDelete(workspace)">
<MkDropdownItem v-if="perm.system.workspace.delete()" @click="handleWorkspaceDelete(workspace)">
<template #icon>
<MkIcon name="icon_delete-trash_outlined" />
</template>
Expand Down
9 changes: 7 additions & 2 deletions ui/src/views/system/resource-management/model/index.vue
Original file line number Diff line number Diff line change
Expand Up @@ -197,9 +197,14 @@ onMounted(() => {
:model="row"
/>
<!-- 查看关联资源 -->
<RelatedResourcesModelAction v-if="perm.model.system.relateMap()" label="查看关联资源" :api="SystemRelatedResourcesApi" :model="row" />
<RelatedResourcesModelAction
v-if="perm.model.system.relateMap()"
label="查看关联资源"
:api="SystemRelatedResourcesApi"
:model="row"
/>
<!-- 删除模型 -->
<MkDropdownItem v-if="perm.model.system.delete()" divided :disabled="loading" @click="handleDeleteModel(row)">
<MkDropdownItem v-if="perm.model.system.delete()" :disabled="loading" @click="handleDeleteModel(row)">
<template #icon><MkIcon name="icon_delete-trash_outlined" /></template>
删除
</MkDropdownItem>
Expand Down
Loading
Loading