feat: Paragraph edit permission

This commit is contained in:
zhangzhanwei 2025-07-16 11:17:18 +08:00 committed by zhanweizhang7
parent 526b4081bc
commit ab14cf2e9d
2 changed files with 34 additions and 7 deletions

View File

@ -20,18 +20,23 @@
v-model="data.is_active" v-model="data.is_active"
:before-change="() => changeState(data)" :before-change="() => changeState(data)"
size="small" size="small"
v-if="permissionPrecise.doc_edit(id)"
/> />
<el-divider direction="vertical" /> <el-divider direction="vertical" />
<span class="mr-8"> <span class="mr-8">
<el-button link @click.stop="editParagraph(data)"> <el-button link @click.stop="editParagraph(data)"
v-if="permissionPrecise.doc_edit(id)"
>
<el-icon :size="16" :title="$t('common.edit')"> <el-icon :size="16" :title="$t('common.edit')">
<EditPen /> <EditPen />
</el-icon> </el-icon>
</el-button> </el-button>
</span> </span>
<span class="mr-8"> <span class="mr-8">
<el-button link @click.stop="addParagraph(data)"> <el-button link @click.stop="addParagraph(data)"
v-if="permissionPrecise.doc_edit(id)"
>
<el-icon :size="16" :title="$t('common.add')"> <el-icon :size="16" :title="$t('common.add')">
<el-icon><CirclePlus /></el-icon> <el-icon><CirclePlus /></el-icon>
</el-icon> </el-icon>
@ -43,15 +48,19 @@
</el-button> </el-button>
<template #dropdown> <template #dropdown>
<el-dropdown-menu style="min-width: 140px;"> <el-dropdown-menu style="min-width: 140px;">
<el-dropdown-item @click.stop="openGenerateDialog(data)"> <el-dropdown-item @click.stop="openGenerateDialog(data)"
v-if="permissionPrecise.doc_generate(id)"
>
<el-icon><Connection /></el-icon> <el-icon><Connection /></el-icon>
{{ $t('views.document.generateQuestion.title') }}</el-dropdown-item {{ $t('views.document.generateQuestion.title') }}</el-dropdown-item
> >
<el-dropdown-item @click.stop="openSelectDocumentDialog(data)"> <el-dropdown-item @click.stop="openSelectDocumentDialog(data)"
v-if="permissionPrecise.doc_edit(id)"
>
<AppIcon iconName="app-migrate"></AppIcon> <AppIcon iconName="app-migrate"></AppIcon>
{{ $t('views.document.setting.migration') }}</el-dropdown-item {{ $t('views.document.setting.migration') }}</el-dropdown-item
> >
<el-dropdown-item> <el-dropdown-item v-if="permissionPrecise.doc_edit(id)">
<el-dropdown class="w-full" trigger="hover" :show-arrow="false" placement="right-start" popper-class="move-position-popper"> <el-dropdown class="w-full" trigger="hover" :show-arrow="false" placement="right-start" popper-class="move-position-popper">
<div class="w-full flex-between" style="line-height: 22px;"> <div class="w-full flex-between" style="line-height: 22px;">
<div class="flex align-center"> <div class="flex align-center">
@ -79,7 +88,9 @@
</template> </template>
</el-dropdown> </el-dropdown>
</el-dropdown-item> </el-dropdown-item>
<el-dropdown-item icon="Delete" @click.stop="deleteParagraph(data)">{{ <el-dropdown-item icon="Delete" @click.stop="deleteParagraph(data)"
v-if="permissionPrecise.doc_edit(id)"
>{{
$t('common.delete') $t('common.delete')
}}</el-dropdown-item> }}</el-dropdown-item>
</el-dropdown-menu> </el-dropdown-menu>
@ -119,6 +130,7 @@ import ParagraphDialog from '@/views/paragraph/component/ParagraphDialog.vue'
import SelectDocumentDialog from '@/views/paragraph/component/SelectDocumentDialog.vue' import SelectDocumentDialog from '@/views/paragraph/component/SelectDocumentDialog.vue'
import { MsgSuccess, MsgConfirm } from '@/utils/message' import { MsgSuccess, MsgConfirm } from '@/utils/message'
import { loadSharedApi } from '@/utils/dynamics-api/shared-api' import { loadSharedApi } from '@/utils/dynamics-api/shared-api'
import permissionMap from '@/permission'
import { t } from '@/locales' import { t } from '@/locales'
const props = defineProps<{ const props = defineProps<{
data: any data: any
@ -127,6 +139,8 @@ const props = defineProps<{
showMoveDown?: boolean showMoveDown?: boolean
}>() }>()
console.log(props)
const route = useRoute() const route = useRoute()
const { const {
params: { id, documentId }, params: { id, documentId },
@ -137,6 +151,10 @@ const apiType = computed(() => {
return type as 'systemShare' | 'workspace' | 'systemManage' return type as 'systemShare' | 'workspace' | 'systemManage'
}) })
const permissionPrecise = computed (() => {
return permissionMap['knowledge'][apiType.value]
})
const emit = defineEmits(['clickCard','changeState', 'deleteParagraph', 'refresh', 'refreshMigrateParagraph','move']) const emit = defineEmits(['clickCard','changeState', 'deleteParagraph', 'refresh', 'refreshMigrateParagraph','move'])
const loading = ref(false) const loading = ref(false)
const changeStateloading = ref(false) const changeStateloading = ref(false)
@ -202,7 +220,11 @@ function editParagraph(row: any) {
} }
} }
const cardClick = permissionPrecise.value.doc_edit(id)
function handleClickCard(row: any) { function handleClickCard(row: any) {
if (!cardClick)
{return }
if (!props.disabled) { if (!props.disabled) {
editParagraph(row) editParagraph(row)
}else { }else {

View File

@ -12,7 +12,7 @@
> >
</el-text> </el-text>
</div> </div>
<div class="header-button" v-if="!shareDisabled"> <div class="header-button" v-if="!shareDisabled && permissionPrecise.doc_edit(id)">
<el-button @click="batchSelectedHandle(true)" v-if="isBatch === false"> <el-button @click="batchSelectedHandle(true)" v-if="isBatch === false">
{{ $t('views.paragraph.setting.batchSelected') }} {{ $t('views.paragraph.setting.batchSelected') }}
</el-button> </el-button>
@ -172,6 +172,7 @@ import GenerateRelatedDialog from '@/components/generate-related-dialog/index.vu
import { VueDraggable } from 'vue-draggable-plus' import { VueDraggable } from 'vue-draggable-plus'
import { MsgSuccess, MsgConfirm } from '@/utils/message' import { MsgSuccess, MsgConfirm } from '@/utils/message'
import { loadSharedApi } from '@/utils/dynamics-api/shared-api' import { loadSharedApi } from '@/utils/dynamics-api/shared-api'
import permissionMap from '@/permission'
import { t } from '@/locales' import { t } from '@/locales'
const route = useRoute() const route = useRoute()
const { const {
@ -185,6 +186,10 @@ const apiType = computed(() => {
const shareDisabled = computed(() => { const shareDisabled = computed(() => {
return isShared === 'true' return isShared === 'true'
}) })
const permissionPrecise = computed(() => {
return permissionMap['knowledge'][apiType.value]
})
const SelectDocumentDialogRef = ref() const SelectDocumentDialogRef = ref()
const ParagraphDialogRef = ref() const ParagraphDialogRef = ref()