Skip to content

Commit 61359e0

Browse files
feat: knowledge
1 parent fd2b124 commit 61359e0

File tree

6 files changed

+140
-14
lines changed

6 files changed

+140
-14
lines changed

ui/src/api/knowledge/knowledge.ts

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -123,16 +123,19 @@ const postDataset: (
123123
* @param 参数
124124
* {
125125
"name": "string",
126-
"desc": "string",
127-
"source_url": "string",
128-
"selector": "string",
126+
"folder_id": "string",
127+
"desc": "string",
128+
"embedding": "string",
129+
"source_url": "string",
130+
"selector": "string"
129131
}
130132
*/
131-
const postWebDataset: (data: any, loading?: Ref<boolean>) => Promise<Result<any>> = (
132-
data,
133-
loading,
134-
) => {
135-
return post(`${prefix}/web`, data, undefined, loading)
133+
const postWebDataset: (
134+
wordspace_id: string,
135+
data: any,
136+
loading?: Ref<boolean>,
137+
) => Promise<Result<any>> = (wordspace_id, data, loading) => {
138+
return post(`${prefix}/${wordspace_id}/knowledge/web`, data, undefined, loading)
136139
}
137140
/**
138141
* 创建Lark知识库
@@ -159,4 +162,5 @@ export default {
159162
putSyncWebKnowledge,
160163
getKnowledgeDetail,
161164
postDataset,
165+
postWebDataset
162166
}

ui/src/views/knowledge/component/KnowledgeIcon.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
<script setup lang="ts">
1919
const props = defineProps({
2020
type: {
21-
type: String,
21+
type: [String, Number],
2222
default: '',
2323
},
2424
})

ui/src/views/knowledge/create-component/CreateKnowledgeDialog.vue

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,10 +36,11 @@ const BaseFormRef = ref()
3636
3737
const loading = ref(false)
3838
const dialogVisible = ref<boolean>(false)
39-
const currentFolder = ref<string>('')
39+
const currentFolder = ref<any>(null)
4040
4141
watch(dialogVisible, (bool) => {
4242
if (!bool) {
43+
currentFolder.value = null
4344
}
4445
})
4546
@@ -51,7 +52,7 @@ const open = (folder: string) => {
5152
const submitHandle = async () => {
5253
if (await BaseFormRef.value?.validate()) {
5354
const obj = {
54-
folder_id: currentFolder.value.id,
55+
folder_id: currentFolder.value?.id,
5556
...BaseFormRef.value.form,
5657
}
5758
KnowledgeApi.postDataset('default', obj, loading).then((res) => {

ui/src/views/knowledge/create-component/CreateKnowledgeDialog copy.vue renamed to ui/src/views/knowledge/create-component/CreateWebKnowledgeDialog copy.vue

File renamed without changes.
Lines changed: 120 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,120 @@
1+
<template>
2+
<el-dialog
3+
:title="$t('views.knowledge.knowledgeType.createGeneralKnowledge')"
4+
v-model="dialogVisible"
5+
width="720"
6+
append-to-body
7+
:close-on-click-modal="false"
8+
:close-on-press-escape="false"
9+
>
10+
<!-- 基本信息 -->
11+
<BaseForm ref="BaseFormRef" v-if="dialogVisible" />
12+
<el-form
13+
ref="KnowledgeFormRef"
14+
:rules="rules"
15+
:model="knowledgeForm"
16+
label-position="top"
17+
require-asterisk-position="right"
18+
>
19+
<el-form-item :label="$t('views.knowledge.form.source_url.label')" prop="source_url">
20+
<el-input
21+
v-model="knowledgeForm.source_url"
22+
:placeholder="$t('views.knowledge.form.source_url.placeholder')"
23+
@blur="knowledgeForm.source_url = knowledgeForm.source_url.trim()"
24+
/>
25+
</el-form-item>
26+
<el-form-item :label="$t('views.knowledge.form.selector.label')">
27+
<el-input
28+
v-model="knowledgeForm.selector"
29+
:placeholder="$t('views.knowledge.form.selector.placeholder')"
30+
@blur="knowledgeForm.selector = knowledgeForm.selector.trim()"
31+
/>
32+
</el-form-item>
33+
</el-form>
34+
<template #footer>
35+
<span class="dialog-footer">
36+
<el-button @click.prevent="dialogVisible = false" :loading="loading">
37+
{{ $t('common.cancel') }}
38+
</el-button>
39+
<el-button type="primary" @click="submitHandle" :loading="loading">
40+
{{ $t('common.create') }}
41+
</el-button>
42+
</span>
43+
</template>
44+
</el-dialog>
45+
</template>
46+
<script setup lang="ts">
47+
import { ref, watch, reactive } from 'vue'
48+
import { useRouter, useRoute } from 'vue-router'
49+
import BaseForm from '@/views/knowledge/component/BaseForm.vue'
50+
import KnowledgeApi from '@/api/knowledge/knowledge'
51+
import { MsgSuccess, MsgAlert } from '@/utils/message'
52+
import { t } from '@/locales'
53+
const emit = defineEmits(['refresh'])
54+
55+
const router = useRouter()
56+
const BaseFormRef = ref()
57+
const KnowledgeFormRef = ref()
58+
59+
const loading = ref(false)
60+
const dialogVisible = ref<boolean>(false)
61+
62+
const knowledgeForm = ref<any>({
63+
source_url: '',
64+
selector: '',
65+
})
66+
67+
const rules = reactive({
68+
source_url: [
69+
{
70+
required: true,
71+
message: t('views.knowledge.form.source_url.requiredMessage'),
72+
trigger: 'blur',
73+
},
74+
],
75+
})
76+
77+
const currentFolder = ref<any>(null)
78+
79+
watch(dialogVisible, (bool) => {
80+
if (!bool) {
81+
currentFolder.value = null
82+
knowledgeForm.value = {
83+
source_url: '',
84+
selector: '',
85+
}
86+
KnowledgeFormRef.value?.clearValidate()
87+
}
88+
})
89+
90+
const open = (folder: string) => {
91+
currentFolder.value = folder
92+
dialogVisible.value = true
93+
}
94+
95+
const submitHandle = async () => {
96+
if (await BaseFormRef.value?.validate()) {
97+
await KnowledgeFormRef.value.validate((valid: any) => {
98+
if (valid) {
99+
const obj = {
100+
folder_id: currentFolder.value?.id,
101+
...BaseFormRef.value.form,
102+
...knowledgeForm.value,
103+
}
104+
KnowledgeApi.postWebDataset('default', obj, loading).then((res) => {
105+
MsgSuccess(t('common.createSuccess'))
106+
router.push({ path: `/knowledge/${res.data.id}/document` })
107+
emit('refresh')
108+
})
109+
} else {
110+
return false
111+
}
112+
})
113+
} else {
114+
return false
115+
}
116+
}
117+
118+
defineExpose({ open })
119+
</script>
120+
<style lang="scss" scoped></style>

ui/src/views/knowledge/index.vue

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@
6262
</div>
6363
</div>
6464
</el-dropdown-item>
65-
<el-dropdown-item @click="openCreateDialog">
65+
<el-dropdown-item @click="openCreateDialog(CreateWebKnowledgeDialog)">
6666
<div class="flex">
6767
<el-avatar class="avatar-purple mt-4" shape="square" :size="32">
6868
<img src="@/assets/knowledge/icon_web.svg" style="width: 58%" alt="" />
@@ -77,7 +77,7 @@
7777
</div>
7878
</div>
7979
</el-dropdown-item>
80-
<el-dropdown-item @click="openCreateDialog">
80+
<el-dropdown-item>
8181
<div class="flex">
8282
<el-avatar
8383
class="avatar-purple mt-4"
@@ -97,7 +97,7 @@
9797
</div>
9898
</div>
9999
</el-dropdown-item>
100-
<el-dropdown-item @click="openCreateDialog">
100+
<el-dropdown-item>
101101
<div class="flex">
102102
<el-avatar
103103
class="avatar-purple mt-4"
@@ -267,6 +267,7 @@
267267
import { onMounted, ref, reactive, shallowRef, nextTick } from 'vue'
268268
import KnowledgeIcon from '@/views/knowledge/component/KnowledgeIcon.vue'
269269
import CreateKnowledgeDialog from './create-component/CreateKnowledgeDialog.vue'
270+
import CreateWebKnowledgeDialog from './create-component/CreateWebKnowledgeDialog.vue'
270271
import KnowledgeApi from '@/api/knowledge/knowledge'
271272
import { MsgSuccess, MsgConfirm } from '@/utils/message'
272273
import useStore from '@/stores'

0 commit comments

Comments
 (0)