feat: permission

This commit is contained in:
wangdan-fit2cloud 2025-06-17 20:35:24 +08:00
parent 3360c49f4c
commit 449aa63f85
14 changed files with 33 additions and 26 deletions

View File

@ -158,12 +158,12 @@ const putGenerateRelated: (
* @query { query_text: string, top_number: number, similarity: number } * @query { query_text: string, top_number: number, similarity: number }
* @returns * @returns
*/ */
const getKnowledgeHitTest: ( const putKnowledgeHitTest: (
knowledge_id: string, knowledge_id: string,
data: any, data: any,
loading?: Ref<boolean>, loading?: Ref<boolean>,
) => Promise<Result<Array<any>>> = (knowledge_id, data, loading) => { ) => Promise<Result<Array<any>>> = (knowledge_id, data, loading) => {
return get(`${prefix.value}/${knowledge_id}/hit_test`, data, loading) return put(`${prefix.value}/${knowledge_id}/hit_test`, undefined, data, loading)
} }
/** /**
@ -265,7 +265,7 @@ export default {
exportKnowledge, exportKnowledge,
exportZipKnowledge, exportZipKnowledge,
putGenerateRelated, putGenerateRelated,
getKnowledgeHitTest, putKnowledgeHitTest,
putSyncWebKnowledge, putSyncWebKnowledge,
postKnowledge, postKnowledge,
getKnowledgeModel, getKnowledgeModel,

View File

@ -143,7 +143,6 @@ const putGenerateRelated: (
) => Promise<Result<Array<any>>> = (knowledge_id, data, loading) => { ) => Promise<Result<Array<any>>> = (knowledge_id, data, loading) => {
return put(`${prefix}/${knowledge_id}/generate_related`, data, null, loading) return put(`${prefix}/${knowledge_id}/generate_related`, data, null, loading)
} }
/** /**
* *
* @param knowledge_id * @param knowledge_id
@ -151,14 +150,15 @@ const putGenerateRelated: (
* @query { query_text: string, top_number: number, similarity: number } * @query { query_text: string, top_number: number, similarity: number }
* @returns * @returns
*/ */
const getKnowledgeHitTest: ( const putKnowledgeHitTest: (
knowledge_id: string, knowledge_id: string,
data: any, data: any,
loading?: Ref<boolean>, loading?: Ref<boolean>,
) => Promise<Result<Array<any>>> = (knowledge_id, data, loading) => { ) => Promise<Result<Array<any>>> = (knowledge_id, data, loading) => {
return get(`${prefix}/${knowledge_id}/hit_test`, data, loading) return put(`${prefix}/${knowledge_id}/hit_test`, undefined, data, loading)
} }
/** /**
* *
* @param knowledge_id * @param knowledge_id
@ -260,7 +260,7 @@ export default {
exportKnowledge, exportKnowledge,
exportZipKnowledge, exportZipKnowledge,
putGenerateRelated, putGenerateRelated,
getKnowledgeHitTest, putKnowledgeHitTest,
putSyncWebKnowledge, putSyncWebKnowledge,
postKnowledge, postKnowledge,
getKnowledgeModel, getKnowledgeModel,

View File

@ -4,11 +4,13 @@
<div class="logo mt-4"> <div class="logo mt-4">
<LogoFull /> <LogoFull />
</div> </div>
<el-divider <el-divider
direction="vertical" direction="vertical"
class="ml-24 mr-24" class="ml-24 mr-24"
v-if="hasPermission(EditionConst.IS_EE, 'OR')" v-if="hasPermission(EditionConst.IS_EE, 'OR')"
/> />
<!-- 企业版: 工作空间下拉框-->
<WorkspaceDropdown v-if="hasPermission(EditionConst.IS_EE, 'OR')" /> <WorkspaceDropdown v-if="hasPermission(EditionConst.IS_EE, 'OR')" />
<div class="flex-between w-full"> <div class="flex-between w-full">
<div></div> <div></div>

View File

@ -14,7 +14,7 @@ const ModelRouter = {
// 上传文档 // 上传文档
{ {
path: '/knowledge/document/upload', path: '/knowledge/document/upload/:folderId',
name: 'UploadDocument', name: 'UploadDocument',
meta: { activeMenu: '/knowledge' }, meta: { activeMenu: '/knowledge' },
component: () => import('@/views/document/UploadDocument.vue'), component: () => import('@/views/document/UploadDocument.vue'),

View File

@ -1,6 +1,6 @@
import { ChatUserResourceEnum } from '@/enums/workspaceChatUser' import { ChatUserResourceEnum } from '@/enums/workspaceChatUser'
import { PermissionConst, RoleConst } from '@/utils/permission/data' import { PermissionConst, EditionConst, RoleConst } from '@/utils/permission/data'
const ApplicationDetailRouter = { const ApplicationDetailRouter = {
path: '/application/:id/:type', path: '/application/:id/:type',
@ -49,7 +49,7 @@ const ApplicationDetailRouter = {
active: 'access', active: 'access',
parentPath: '/application/:id/:type', parentPath: '/application/:id/:type',
parentName: 'ApplicationDetail', parentName: 'ApplicationDetail',
// permission: new ComplexPermission([], ['x-pack'], 'OR'), permission: [EditionConst.IS_PE, EditionConst.IS_EE],
}, },
component: () => import('@/views/application/ApplicationAccess.vue'), component: () => import('@/views/application/ApplicationAccess.vue'),
}, },
@ -75,9 +75,10 @@ const ApplicationDetailRouter = {
active: 'chat-log', active: 'chat-log',
parentPath: '/application/:id/:type', parentPath: '/application/:id/:type',
parentName: 'ApplicationDetail', parentName: 'ApplicationDetail',
resourceType: ChatUserResourceEnum.APPLICATION resourceType: ChatUserResourceEnum.APPLICATION,
permission: [EditionConst.IS_PE, EditionConst.IS_EE],
}, },
component: () => import('@/views/chat-user/index.vue') component: () => import('@/views/chat-user/index.vue'),
}, },
{ {
path: 'chat-log', path: 'chat-log',

View File

@ -1,5 +1,6 @@
import { ChatUserResourceEnum } from '@/enums/workspaceChatUser' import { ChatUserResourceEnum } from '@/enums/workspaceChatUser'
import { PermissionConst, EditionConst, RoleConst } from '@/utils/permission/data'
const DocumentRouter = { const DocumentRouter = {
path: '/knowledge/:id/:folderId', path: '/knowledge/:id/:folderId',
name: 'KnowledgeDetail', name: 'KnowledgeDetail',
@ -55,9 +56,10 @@ const DocumentRouter = {
active: 'chat-log', active: 'chat-log',
parentPath: '/knowledge/:id/:folderId', parentPath: '/knowledge/:id/:folderId',
parentName: 'KnowledgeDetail', parentName: 'KnowledgeDetail',
resourceType: ChatUserResourceEnum.KNOWLEDGE resourceType: ChatUserResourceEnum.KNOWLEDGE,
permission: [EditionConst.IS_PE, EditionConst.IS_EE],
}, },
component: () => import('@/views/chat-user/index.vue') component: () => import('@/views/chat-user/index.vue'),
}, },
{ {
path: 'setting', path: 'setting',

View File

@ -71,6 +71,7 @@ const documentsType = computed(() => knowledge.documentsType)
const router = useRouter() const router = useRouter()
const route = useRoute() const route = useRoute()
const { const {
params: { folderId },
query: { id }, // idknowledgeIDid query: { id }, // idknowledgeIDid
} = route } = route
@ -96,7 +97,7 @@ async function next() {
documentApi.postQADocument(id as string, fd, loading).then((res) => { documentApi.postQADocument(id as string, fd, loading).then((res) => {
MsgSuccess(t('common.submitSuccess')) MsgSuccess(t('common.submitSuccess'))
clearStore() clearStore()
router.push({ path: `/knowledge/${id}/document` }) router.push({ path: `/knowledge/${id}/${folderId}/document` })
}) })
} }
} else if (documentsType.value === 'table') { } else if (documentsType.value === 'table') {
@ -111,7 +112,7 @@ async function next() {
documentApi.postTableDocument(id as string, fd, loading).then((res) => { documentApi.postTableDocument(id as string, fd, loading).then((res) => {
MsgSuccess(t('common.submitSuccess')) MsgSuccess(t('common.submitSuccess'))
clearStore() clearStore()
router.push({ path: `/knowledge/${id}/document` }) router.push({ path: `/knowledge/${id}/${folderId}/document` })
}) })
} }
} else { } else {
@ -151,7 +152,7 @@ function submit() {
.then(() => { .then(() => {
MsgSuccess(t('common.submitSuccess')) MsgSuccess(t('common.submitSuccess'))
clearStore() clearStore()
router.push({ path: `/knowledge/${id}/document` }) router.push({ path: `/knowledge/${id}/${folderId}/document` })
}) })
.catch(() => { .catch(() => {
loading.value = false loading.value = false

View File

@ -9,7 +9,7 @@
<el-button <el-button
v-if="knowledgeDetail.type === 0" v-if="knowledgeDetail.type === 0"
type="primary" type="primary"
@click="router.push({ path: '/knowledge/document/upload', query: { id: id } })" @click="router.push({ path: `/knowledge/document/upload/${folderId}`, query: { id: id } })"
v-hasPermission="[RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,PermissionConst.KNOWLEDGE_DOCUMENT_CREATE.getWorkspacePermission]" v-hasPermission="[RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,PermissionConst.KNOWLEDGE_DOCUMENT_CREATE.getWorkspacePermission]"
>{{ $t('views.document.uploadDocument') }} >{{ $t('views.document.uploadDocument') }}
</el-button> </el-button>

View File

@ -312,7 +312,7 @@ function getHitTestList() {
...formInline.value, ...formInline.value,
} }
if (isDataset.value) { if (isDataset.value) {
KnowledgeApi.getKnowledgeHitTest(id, obj, loading).then((res) => { KnowledgeApi.putKnowledgeHitTest(id, obj, loading).then((res) => {
paragraphDetail.value = res.data && arraySort(res.data, 'comprehensive_score', true) paragraphDetail.value = res.data && arraySort(res.data, 'comprehensive_score', true)
questionTitle.value = inputValue.value questionTitle.value = inputValue.value
inputValue.value = '' inputValue.value = ''

View File

@ -140,6 +140,9 @@ import QrCodeTab from '@/views/login/scanCompinents/QrCodeTab.vue'
import { MsgConfirm, MsgError } from '@/utils/message.ts' import { MsgConfirm, MsgError } from '@/utils/message.ts'
import * as dd from 'dingtalk-jsapi' import * as dd from 'dingtalk-jsapi'
import { loadScript } from '@/utils/utils' import { loadScript } from '@/utils/utils'
import { EditionConst } from '@/utils/permission/data'
import { hasPermission } from '@/utils/permission/index'
const router = useRouter() const router = useRouter()
const { login, user, theme } = useStore() const { login, user, theme } = useStore()
const { locale } = useI18n({ useScope: 'global' }) const { locale } = useI18n({ useScope: 'global' })
@ -296,7 +299,8 @@ function changeMode(val: string) {
onBeforeMount(() => { onBeforeMount(() => {
loading.value = true loading.value = true
user.asyncGetProfile().then((res) => { user.asyncGetProfile().then((res) => {
if (user.isEnterprise()) { //
if (hasPermission([EditionConst.IS_EE, EditionConst.IS_PE], 'OR')) {
login login
.getAuthType() .getAuthType()
.then((res) => { .then((res) => {

View File

@ -128,8 +128,6 @@ import useStore from '@/stores'
import ParamSettingDialog from './ParamSettingDialog.vue' import ParamSettingDialog from './ParamSettingDialog.vue'
import {t} from '@/locales' import {t} from '@/locales'
import { PermissionConst, EditionConst, RoleConst } from '@/utils/permission/data' import { PermissionConst, EditionConst, RoleConst } from '@/utils/permission/data'
import { hasPermission } from '@/utils/permission/index'
import { ComplexPermission } from '@/utils/permission/type'
const props = defineProps<{ const props = defineProps<{
model: Model model: Model

View File

@ -119,7 +119,6 @@ import SelectProviderDialog from '@/views/model/component/SelectProviderDialog.v
import useStore from '@/stores' 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 { hasPermission } from '@/utils/permission/index'
const { model } = useStore() const { model } = useStore()

View File

@ -312,7 +312,7 @@ function getHitTestList() {
...formInline.value, ...formInline.value,
} }
if (isDataset.value) { if (isDataset.value) {
KnowledgeApi.getKnowledgeHitTest(id, obj, loading).then((res) => { KnowledgeApi.putKnowledgeHitTest(id, obj, loading).then((res) => {
paragraphDetail.value = res.data && arraySort(res.data, 'comprehensive_score', true) paragraphDetail.value = res.data && arraySort(res.data, 'comprehensive_score', true)
questionTitle.value = inputValue.value questionTitle.value = inputValue.value
inputValue.value = '' inputValue.value = ''

View File

@ -17,7 +17,7 @@ export default defineConfig(({ mode }) => {
const prefix = process.env.VITE_DYNAMIC_PREFIX || ENV.VITE_BASE_PATH const prefix = process.env.VITE_DYNAMIC_PREFIX || ENV.VITE_BASE_PATH
const proxyConf: Record<string, string | ProxyOptions> = {} const proxyConf: Record<string, string | ProxyOptions> = {}
proxyConf['/api'] = { proxyConf['/api'] = {
target: 'http://43.166.1.146:8080', target: 'http://127.0.0.1:8080',
changeOrigin: true, changeOrigin: true,
rewrite: (path: string) => path.replace(ENV.VITE_BASE_PATH, '/'), rewrite: (path: string) => path.replace(ENV.VITE_BASE_PATH, '/'),
} }