mirror of
https://github.com/1Panel-dev/MaxKB.git
synced 2025-12-26 10:12:51 +00:00
feat: knowledge
This commit is contained in:
parent
156b490f1a
commit
48e37148f0
|
|
@ -0,0 +1,23 @@
|
|||
import { h } from 'vue'
|
||||
export default {
|
||||
'app-add-users': {
|
||||
iconReader: () => {
|
||||
return h('i', [
|
||||
h(
|
||||
'svg',
|
||||
{
|
||||
viewBox: '0 0 20 20',
|
||||
version: '1.1',
|
||||
xmlns: 'http://www.w3.org/2000/svg',
|
||||
},
|
||||
[
|
||||
h('path', {
|
||||
d: 'M6.24984 5.41667C6.24984 6.7975 7.37067 7.91667 8.74984 7.91667C10.129 7.91667 11.2498 6.7975 11.2498 5.41667C11.2498 4.03583 10.129 2.91667 8.74984 2.91667C7.37067 2.91667 6.24984 4.03583 6.24984 5.41667ZM8.74984 1.25C11.0498 1.25 12.9165 3.11542 12.9165 5.41667C12.9165 7.71792 11.0498 9.58333 8.74984 9.58333C6.44984 9.58333 4.58317 7.71792 4.58317 5.41667C4.58317 3.11542 6.44984 1.25 8.74984 1.25ZM3.43734 15C3.37067 15.2663 3.33317 15.5454 3.33317 15.8333V16.6667H10.854C11.0841 16.6667 11.2706 16.8532 11.2706 17.0833V17.9167C11.2706 18.1468 11.0841 18.3333 10.854 18.3333H2.49984C2.0415 18.3333 1.6665 17.9604 1.6665 17.5V15.8333C1.6665 13.0721 3.904 10.8333 6.6665 10.8333H10.854C11.0841 10.8333 11.2706 11.0199 11.2706 11.25V12.0833C11.2706 12.3135 11.0841 12.5 10.854 12.5H6.6665C5.11234 12.5 3.80817 13.5625 3.43734 15ZM15.4165 11.6667C15.6466 11.6667 15.8332 11.8532 15.8332 12.0833V14.1667H17.9165C18.1466 14.1667 18.3332 14.3532 18.3332 14.5833V15.4167C18.3332 15.6468 18.1466 15.8333 17.9165 15.8333H15.8332V17.9167C15.8332 18.1468 15.6466 18.3333 15.4165 18.3333H14.5832C14.3531 18.3333 14.1665 18.1468 14.1665 17.9167V15.8333H12.0832C11.8531 15.8333 11.6665 15.6468 11.6665 15.4167V14.5833C11.6665 14.3532 11.8531 14.1667 12.0832 14.1667H14.1665V12.0833C14.1665 11.8532 14.3531 11.6667 14.5832 11.6667H15.4165Z',
|
||||
fill: 'currentColor',
|
||||
}),
|
||||
],
|
||||
),
|
||||
])
|
||||
},
|
||||
},
|
||||
}
|
||||
|
|
@ -92,6 +92,53 @@ const systemRouter = {
|
|||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
path: '/system/chat',
|
||||
name: 'SystemChat',
|
||||
meta: {
|
||||
icon: 'app-folder-share',
|
||||
iconActive: 'app-folder-share-active',
|
||||
title: '对话用户',
|
||||
activeMenu: '/system',
|
||||
parentPath: '/system',
|
||||
parentName: 'system',
|
||||
},
|
||||
children: [
|
||||
{
|
||||
path: '/system/chat/chat-user',
|
||||
name: 'ChatUser',
|
||||
meta: {
|
||||
title: '对话用户',
|
||||
activeMenu: '/system',
|
||||
parentPath: '/system',
|
||||
parentName: 'system',
|
||||
},
|
||||
component: () => import('@/views/system-chat-user/user-manage/index.vue'),
|
||||
},
|
||||
{
|
||||
path: '/system/chat/group',
|
||||
name: 'Group',
|
||||
meta: {
|
||||
title: '用户组',
|
||||
activeMenu: '/system',
|
||||
parentPath: '/system',
|
||||
parentName: 'system',
|
||||
},
|
||||
component: () => import('@/views/system-chat-user/group/index.vue'),
|
||||
},
|
||||
{
|
||||
path: '/system/chat/authentication',
|
||||
name: 'Authentication',
|
||||
meta: {
|
||||
title: '登录认证',
|
||||
activeMenu: '/system',
|
||||
parentPath: '/system',
|
||||
parentName: 'system',
|
||||
},
|
||||
component: () => import('@/views/system-chat-user/authentication/index.vue'),
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
path: '/system/setting',
|
||||
name: 'setting',
|
||||
|
|
|
|||
|
|
@ -16,7 +16,6 @@
|
|||
label-position="top"
|
||||
require-asterisk-position="right"
|
||||
>
|
||||
|
||||
<el-form-item
|
||||
:label="$t('views.knowledge.form.source_url.label')"
|
||||
prop="source_url"
|
||||
|
|
@ -112,7 +111,7 @@ const datasetForm = ref<any>({
|
|||
selector: '',
|
||||
app_id: '',
|
||||
app_secret: '',
|
||||
folder_token: ''
|
||||
folder_token: '',
|
||||
})
|
||||
|
||||
const rules = reactive({
|
||||
|
|
@ -120,44 +119,44 @@ const rules = reactive({
|
|||
{
|
||||
required: true,
|
||||
message: t('views.knowledge.form.source_url.requiredMessage'),
|
||||
trigger: 'blur'
|
||||
}
|
||||
trigger: 'blur',
|
||||
},
|
||||
],
|
||||
app_id: [
|
||||
{
|
||||
required: true,
|
||||
message: t('views.application.applicationAccess.larkSetting.appIdPlaceholder'),
|
||||
trigger: 'blur'
|
||||
}
|
||||
trigger: 'blur',
|
||||
},
|
||||
],
|
||||
app_secret: [
|
||||
{
|
||||
required: true,
|
||||
message: t('views.application.applicationAccess.larkSetting.appSecretPlaceholder'),
|
||||
trigger: 'blur'
|
||||
}
|
||||
trigger: 'blur',
|
||||
},
|
||||
],
|
||||
folder_token: [
|
||||
{
|
||||
required: true,
|
||||
message: t('views.application.applicationAccess.larkSetting.folderTokenPlaceholder'),
|
||||
trigger: 'blur'
|
||||
}
|
||||
trigger: 'blur',
|
||||
},
|
||||
],
|
||||
user_id: [
|
||||
{
|
||||
required: true,
|
||||
message: t('views.knowledge.form.user_id.requiredMessage'),
|
||||
trigger: 'blur'
|
||||
}
|
||||
trigger: 'blur',
|
||||
},
|
||||
],
|
||||
token: [
|
||||
{
|
||||
required: true,
|
||||
message: t('views.knowledge.form.token.requiredMessage'),
|
||||
trigger: 'blur'
|
||||
}
|
||||
]
|
||||
trigger: 'blur',
|
||||
},
|
||||
],
|
||||
})
|
||||
|
||||
watch(dialogVisible, (bool) => {
|
||||
|
|
@ -165,7 +164,7 @@ watch(dialogVisible, (bool) => {
|
|||
datasetForm.value = {
|
||||
type: '0',
|
||||
source_url: '',
|
||||
selector: ''
|
||||
selector: '',
|
||||
}
|
||||
DatasetFormRef.value?.clearValidate()
|
||||
}
|
||||
|
|
@ -179,31 +178,12 @@ const submitHandle = async () => {
|
|||
if (await BaseFormRef.value?.validate()) {
|
||||
await DatasetFormRef.value.validate((valid: any) => {
|
||||
if (valid) {
|
||||
if (datasetForm.value.type === '0') {
|
||||
const obj = {
|
||||
...BaseFormRef.value.form,
|
||||
type: datasetForm.value.type
|
||||
}
|
||||
knowledgeApi.postDataset(obj, loading).then((res) => {
|
||||
MsgSuccess(t('common.createSuccess'))
|
||||
router.push({ path: `/knowledge/${res.data.id}/document` })
|
||||
emit('refresh')
|
||||
})
|
||||
} else if (datasetForm.value.type === '1') {
|
||||
const obj = { ...BaseFormRef.value.form, ...datasetForm.value }
|
||||
knowledgeApi.postWebDataset(obj, loading).then((res) => {
|
||||
MsgSuccess(t('common.createSuccess'))
|
||||
router.push({ path: `/knowledge/${res.data.id}/document` })
|
||||
emit('refresh')
|
||||
})
|
||||
} else if (datasetForm.value.type === '2') {
|
||||
const obj = { ...BaseFormRef.value.form, ...datasetForm.value }
|
||||
knowledgeApi.postLarkDataset(obj, loading).then((res) => {
|
||||
MsgSuccess(t('common.createSuccess'))
|
||||
router.push({ path: `/knowledge/${res.data.id}/document` })
|
||||
emit('refresh')
|
||||
})
|
||||
}
|
||||
const obj = { ...BaseFormRef.value.form, ...datasetForm.value }
|
||||
KnowledgeApi.postLarkKnowledge(obj, loading).then((res) => {
|
||||
MsgSuccess(t('common.createSuccess'))
|
||||
router.push({ path: `/knowledge/${res.data.id}/document` })
|
||||
emit('refresh')
|
||||
})
|
||||
} else {
|
||||
return false
|
||||
}
|
||||
|
|
@ -212,10 +192,6 @@ const submitHandle = async () => {
|
|||
return false
|
||||
}
|
||||
}
|
||||
function radioChange() {
|
||||
datasetForm.value.source_url = ''
|
||||
datasetForm.value.selector = ''
|
||||
}
|
||||
|
||||
defineExpose({ open })
|
||||
</script>
|
||||
|
|
@ -80,7 +80,7 @@
|
|||
</div>
|
||||
</div>
|
||||
</el-dropdown-item>
|
||||
<el-dropdown-item>
|
||||
<el-dropdown-item @click="openCreateDialog(CreateLarkKnowledgeDialog)">
|
||||
<div class="flex">
|
||||
<el-avatar
|
||||
class="avatar-purple mt-4"
|
||||
|
|
@ -285,6 +285,7 @@ import { onMounted, ref, reactive, shallowRef, nextTick } from 'vue'
|
|||
import KnowledgeIcon from '@/views/knowledge-shared-system/component/KnowledgeIcon.vue'
|
||||
import CreateKnowledgeDialog from './create-component/CreateKnowledgeDialog.vue'
|
||||
import CreateWebKnowledgeDialog from './create-component/CreateWebKnowledgeDialog.vue'
|
||||
import CreateLarkKnowledgeDialog from './create-component/CreateLarkKnowledgeDialog.vue'
|
||||
import CreateFolderDialog from '@/components/folder-tree/CreateFolderDialog.vue'
|
||||
import GenerateRelatedDialog from '@/components/generate-related-dialog/index.vue'
|
||||
import KnowledgeApi from '@/api/shared/knowledge'
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
<template>
|
||||
<el-dialog
|
||||
:title="$t('views.knowledge.knowledgeType.createGeneralKnowledge')"
|
||||
:title="$t('views.knowledge.knowledgeType.createLarkKnowledge')"
|
||||
v-model="dialogVisible"
|
||||
width="720"
|
||||
append-to-body
|
||||
|
|
@ -16,35 +16,13 @@
|
|||
label-position="top"
|
||||
require-asterisk-position="right"
|
||||
>
|
||||
|
||||
<el-form-item
|
||||
:label="$t('views.knowledge.form.source_url.label')"
|
||||
prop="source_url"
|
||||
v-if="datasetForm.type === '1'"
|
||||
>
|
||||
<el-input
|
||||
v-model="datasetForm.source_url"
|
||||
:placeholder="$t('views.knowledge.form.source_url.placeholder')"
|
||||
@blur="datasetForm.source_url = datasetForm.source_url.trim()"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
:label="$t('views.knowledge.form.selector.label')"
|
||||
v-if="datasetForm.type === '1'"
|
||||
>
|
||||
<el-input
|
||||
v-model="datasetForm.selector"
|
||||
:placeholder="$t('views.knowledge.form.selector.placeholder')"
|
||||
@blur="datasetForm.selector = datasetForm.selector.trim()"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="App ID" prop="app_id" v-if="datasetForm.type === '2'">
|
||||
<el-form-item label="App ID" prop="app_id">
|
||||
<el-input
|
||||
v-model="datasetForm.app_id"
|
||||
:placeholder="$t('views.application.applicationAccess.larkSetting.appIdPlaceholder')"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="App Secret" prop="app_secret" v-if="datasetForm.type === '2'">
|
||||
<el-form-item label="App Secret" prop="app_secret">
|
||||
<el-input
|
||||
v-model="datasetForm.app_secret"
|
||||
type="password"
|
||||
|
|
@ -52,7 +30,7 @@
|
|||
:placeholder="$t('views.application.applicationAccess.larkSetting.appSecretPlaceholder')"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="Folder Token" prop="folder_token" v-if="datasetForm.type === '2'">
|
||||
<el-form-item label="Folder Token" prop="folder_token">
|
||||
<el-input
|
||||
v-model="datasetForm.folder_token"
|
||||
:placeholder="
|
||||
|
|
@ -60,22 +38,6 @@
|
|||
"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="User ID" prop="user_id" v-if="datasetForm.type === '3'">
|
||||
<el-input
|
||||
v-model="datasetForm.user_id"
|
||||
:placeholder="
|
||||
$t('views.application.applicationAccess.larkSetting.folderTokenPlaceholder')
|
||||
"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="Token" prop="token" v-if="datasetForm.type === '3'">
|
||||
<el-input
|
||||
v-model="datasetForm.token"
|
||||
:placeholder="
|
||||
$t('views.application.applicationAccess.larkSetting.folderTokenPlaceholder')
|
||||
"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<template #footer>
|
||||
<span class="dialog-footer">
|
||||
|
|
@ -92,8 +54,8 @@
|
|||
<script setup lang="ts">
|
||||
import { ref, watch, reactive } from 'vue'
|
||||
import { useRouter, useRoute } from 'vue-router'
|
||||
import BaseForm from '@/views/knowledge-shared-system/component/BaseForm.vue'
|
||||
import KnowledgeApi from '@/api/shared/knowledge'
|
||||
import BaseForm from '@/views/knowledge/component/BaseForm.vue'
|
||||
import KnowledgeApi from '@/api/knowledge/knowledge'
|
||||
import { MsgSuccess, MsgAlert } from '@/utils/message'
|
||||
import { t } from '@/locales'
|
||||
import { ComplexPermission } from '@/utils/permission/type'
|
||||
|
|
@ -112,7 +74,7 @@ const datasetForm = ref<any>({
|
|||
selector: '',
|
||||
app_id: '',
|
||||
app_secret: '',
|
||||
folder_token: ''
|
||||
folder_token: '',
|
||||
})
|
||||
|
||||
const rules = reactive({
|
||||
|
|
@ -120,44 +82,44 @@ const rules = reactive({
|
|||
{
|
||||
required: true,
|
||||
message: t('views.knowledge.form.source_url.requiredMessage'),
|
||||
trigger: 'blur'
|
||||
}
|
||||
trigger: 'blur',
|
||||
},
|
||||
],
|
||||
app_id: [
|
||||
{
|
||||
required: true,
|
||||
message: t('views.application.applicationAccess.larkSetting.appIdPlaceholder'),
|
||||
trigger: 'blur'
|
||||
}
|
||||
trigger: 'blur',
|
||||
},
|
||||
],
|
||||
app_secret: [
|
||||
{
|
||||
required: true,
|
||||
message: t('views.application.applicationAccess.larkSetting.appSecretPlaceholder'),
|
||||
trigger: 'blur'
|
||||
}
|
||||
trigger: 'blur',
|
||||
},
|
||||
],
|
||||
folder_token: [
|
||||
{
|
||||
required: true,
|
||||
message: t('views.application.applicationAccess.larkSetting.folderTokenPlaceholder'),
|
||||
trigger: 'blur'
|
||||
}
|
||||
trigger: 'blur',
|
||||
},
|
||||
],
|
||||
user_id: [
|
||||
{
|
||||
required: true,
|
||||
message: t('views.knowledge.form.user_id.requiredMessage'),
|
||||
trigger: 'blur'
|
||||
}
|
||||
trigger: 'blur',
|
||||
},
|
||||
],
|
||||
token: [
|
||||
{
|
||||
required: true,
|
||||
message: t('views.knowledge.form.token.requiredMessage'),
|
||||
trigger: 'blur'
|
||||
}
|
||||
]
|
||||
trigger: 'blur',
|
||||
},
|
||||
],
|
||||
})
|
||||
|
||||
watch(dialogVisible, (bool) => {
|
||||
|
|
@ -165,7 +127,7 @@ watch(dialogVisible, (bool) => {
|
|||
datasetForm.value = {
|
||||
type: '0',
|
||||
source_url: '',
|
||||
selector: ''
|
||||
selector: '',
|
||||
}
|
||||
DatasetFormRef.value?.clearValidate()
|
||||
}
|
||||
|
|
@ -179,31 +141,12 @@ const submitHandle = async () => {
|
|||
if (await BaseFormRef.value?.validate()) {
|
||||
await DatasetFormRef.value.validate((valid: any) => {
|
||||
if (valid) {
|
||||
if (datasetForm.value.type === '0') {
|
||||
const obj = {
|
||||
...BaseFormRef.value.form,
|
||||
type: datasetForm.value.type
|
||||
}
|
||||
knowledgeApi.postDataset(obj, loading).then((res) => {
|
||||
MsgSuccess(t('common.createSuccess'))
|
||||
router.push({ path: `/knowledge/system/${res.data.id}/documentShared` })
|
||||
emit('refresh')
|
||||
})
|
||||
} else if (datasetForm.value.type === '1') {
|
||||
const obj = { ...BaseFormRef.value.form, ...datasetForm.value }
|
||||
knowledgeApi.postWebDataset(obj, loading).then((res) => {
|
||||
MsgSuccess(t('common.createSuccess'))
|
||||
router.push({ path: `/knowledge/system/${res.data.id}/documentShared` })
|
||||
emit('refresh')
|
||||
})
|
||||
} else if (datasetForm.value.type === '2') {
|
||||
const obj = { ...BaseFormRef.value.form, ...datasetForm.value }
|
||||
knowledgeApi.postLarkDataset(obj, loading).then((res) => {
|
||||
MsgSuccess(t('common.createSuccess'))
|
||||
router.push({ path: `/knowledge/system/${res.data.id}/documentShared` })
|
||||
emit('refresh')
|
||||
})
|
||||
}
|
||||
const obj = { ...BaseFormRef.value.form, ...datasetForm.value }
|
||||
KnowledgeApi.postLarkKnowledge(obj, loading).then((res) => {
|
||||
MsgSuccess(t('common.createSuccess'))
|
||||
router.push({ path: `/knowledge/${res.data.id}/document` })
|
||||
emit('refresh')
|
||||
})
|
||||
} else {
|
||||
return false
|
||||
}
|
||||
|
|
@ -212,10 +155,6 @@ const submitHandle = async () => {
|
|||
return false
|
||||
}
|
||||
}
|
||||
function radioChange() {
|
||||
datasetForm.value.source_url = ''
|
||||
datasetForm.value.selector = ''
|
||||
}
|
||||
|
||||
defineExpose({ open })
|
||||
</script>
|
||||
|
|
@ -82,7 +82,7 @@
|
|||
</div>
|
||||
</div>
|
||||
</el-dropdown-item>
|
||||
<el-dropdown-item>
|
||||
<el-dropdown-item @click="openCreateDialog(CreateLarkKnowledgeDialog)">
|
||||
<div class="flex">
|
||||
<el-avatar
|
||||
class="avatar-purple mt-4"
|
||||
|
|
@ -282,6 +282,7 @@
|
|||
import { onMounted, ref, reactive, shallowRef, nextTick } from 'vue'
|
||||
import CreateKnowledgeDialog from './create-component/CreateKnowledgeDialog.vue'
|
||||
import CreateWebKnowledgeDialog from './create-component/CreateWebKnowledgeDialog.vue'
|
||||
import CreateLarkKnowledgeDialog from './create-component/CreateLarkKnowledgeDialog.vue'
|
||||
import CreateFolderDialog from '@/components/folder-tree/CreateFolderDialog.vue'
|
||||
import GenerateRelatedDialog from '@/components/generate-related-dialog/index.vue'
|
||||
import KnowledgeApi from '@/api/knowledge/knowledge'
|
||||
|
|
|
|||
|
|
@ -38,7 +38,7 @@
|
|||
import { ref, watch, onMounted } from 'vue'
|
||||
import type { FormInstance, FormRules } from 'element-plus'
|
||||
import { MsgSuccess } from '@/utils/message'
|
||||
import TeamApi from '@/api/team'
|
||||
import GroupApi from '@/api/system/user-group'
|
||||
import { t } from '@/locales'
|
||||
const emit = defineEmits(['refresh'])
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,8 @@
|
|||
<template>
|
||||
<LayoutContainer :header="$t('views.group.title')">
|
||||
<div class="group-manage flex main-calc-height">
|
||||
<div class="group-manage p-16-24">
|
||||
<h4 class="mb-16">{{ $t('views.group.title') }}</h4>
|
||||
|
||||
<div class="flex main-calc-height">
|
||||
<div class="group-member p-8 border-r">
|
||||
<div class="flex-between p-16">
|
||||
<h4>{{ $t('views.group.member') }}</h4>
|
||||
|
|
@ -57,7 +59,7 @@
|
|||
</div>
|
||||
</div>
|
||||
<CreateGroupDialog ref="CreateGroupRef" @refresh="refresh" />
|
||||
</LayoutContainer>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup>
|
||||
|
|
|
|||
Loading…
Reference in New Issue