From d0ca56d9fe84f04edf8e8560336ccf72406a2270 Mon Sep 17 00:00:00 2001 From: wangdan-fit2cloud Date: Wed, 10 Jan 2024 17:44:05 +0800 Subject: [PATCH 1/6] =?UTF-8?q?feat:=20=E5=90=8C=E6=AD=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ui/src/api/dataset.ts | 23 ++- ui/src/router/modules/dataset.ts | 2 +- ui/src/stores/modules/dataset.ts | 24 +++ ui/src/views/dataset/DatasetSetting.vue | 150 ++++++++++++++++++ .../views/dataset/component/SyncWebDialog.vue | 88 ++++++++++ ui/src/views/dataset/index.vue | 19 ++- ui/src/views/dataset/step/StepFirst.vue | 1 + ui/src/views/document/DatasetSetting.vue | 100 ------------ ui/src/views/document/index.vue | 80 ++++++++-- 9 files changed, 365 insertions(+), 122 deletions(-) create mode 100644 ui/src/views/dataset/DatasetSetting.vue create mode 100644 ui/src/views/dataset/component/SyncWebDialog.vue delete mode 100644 ui/src/views/document/DatasetSetting.vue diff --git a/ui/src/api/dataset.ts b/ui/src/api/dataset.ts index 895782feb..60b0b46fc 100644 --- a/ui/src/api/dataset.ts +++ b/ui/src/api/dataset.ts @@ -97,8 +97,11 @@ const postWebDateset: (data: any, loading?: Ref) => Promise * 知识库详情 * @param 参数 dataset_id */ -const getDatesetDetail: (dataset_id: string) => Promise> = (dataset_id) => { - return get(`${prefix}/${dataset_id}`) +const getDatesetDetail: (dataset_id: string, loading?: Ref) => Promise> = ( + dataset_id, + loading +) => { + return get(`${prefix}/${dataset_id}`, undefined, loading) } /** @@ -144,6 +147,19 @@ const getDatasetHitTest: ( return get(`${prefix}/${dataset_id}/hit_test`, data, loading) } +/** + * 同步知识库 + * @param 参数 dataset_id + * @query 参数 sync_type // 同步类型->replace:替换同步,complete:完整同步 + */ +const getSyncWebDateset: ( + dataset_id: string, + sync_type: string, + loading?: Ref +) => Promise> = (dataset_id, sync_type, loading) => { + return get(`${prefix}/${dataset_id}`, { sync_type }, loading) +} + export default { getDateset, getAllDateset, @@ -153,5 +169,6 @@ export default { putDateset, listUsableApplication, getDatasetHitTest, - postWebDateset + postWebDateset, + getSyncWebDateset } diff --git a/ui/src/router/modules/dataset.ts b/ui/src/router/modules/dataset.ts index 5b6301aee..f74999729 100644 --- a/ui/src/router/modules/dataset.ts +++ b/ui/src/router/modules/dataset.ts @@ -60,7 +60,7 @@ const datasetRouter = { parentPath: '/dataset/:id', parentName: 'DatasetDetail' }, - component: () => import('@/views/document/DatasetSetting.vue') + component: () => import('@/views/dataset/DatasetSetting.vue') } ] }, diff --git a/ui/src/stores/modules/dataset.ts b/ui/src/stores/modules/dataset.ts index 5ef36d82c..5deda6ef5 100644 --- a/ui/src/stores/modules/dataset.ts +++ b/ui/src/stores/modules/dataset.ts @@ -38,6 +38,30 @@ const useDatasetStore = defineStore({ reject(error) }) }) + }, + async asyncGetDatesetDetail(id: string, loading?: Ref) { + return new Promise((resolve, reject) => { + datasetApi + .getDatesetDetail(id, loading) + .then((data) => { + resolve(data) + }) + .catch((error) => { + reject(error) + }) + }) + }, + async asyncSyncDateset(id: string, sync_type: string, loading?: Ref) { + return new Promise((resolve, reject) => { + datasetApi + .getSyncWebDateset(id, sync_type, loading) + .then((data) => { + resolve(data) + }) + .catch((error) => { + reject(error) + }) + }) } } }) diff --git a/ui/src/views/dataset/DatasetSetting.vue b/ui/src/views/dataset/DatasetSetting.vue new file mode 100644 index 000000000..53c06f751 --- /dev/null +++ b/ui/src/views/dataset/DatasetSetting.vue @@ -0,0 +1,150 @@ + + + diff --git a/ui/src/views/dataset/component/SyncWebDialog.vue b/ui/src/views/dataset/component/SyncWebDialog.vue new file mode 100644 index 000000000..674109252 --- /dev/null +++ b/ui/src/views/dataset/component/SyncWebDialog.vue @@ -0,0 +1,88 @@ + + + diff --git a/ui/src/views/dataset/index.vue b/ui/src/views/dataset/index.vue index bfeedb398..23e557f11 100644 --- a/ui/src/views/dataset/index.vue +++ b/ui/src/views/dataset/index.vue @@ -53,7 +53,12 @@ - diff --git a/ui/src/views/document/index.vue b/ui/src/views/document/index.vue index 9d91f952f..540e40a66 100644 --- a/ui/src/views/document/index.vue +++ b/ui/src/views/document/index.vue @@ -3,11 +3,18 @@
- 上传文档 +
+ 上传文档 + 导入文档 + + 批量删除 +
+ @@ -108,17 +144,20 @@ import documentApi from '@/api/document' import { numberFormat } from '@/utils/utils' import { datetimeFormat } from '@/utils/time' import { MsgSuccess, MsgConfirm } from '@/utils/message' +import useStore from '@/stores' const router = useRouter() const route = useRoute() const { params: { id } } = route as any +const { dataset } = useStore() const loading = ref(false) let interval: any const filterText = ref('') const documentData = ref([]) const currentMouseId = ref(null) +const datasetDetail = ref({}) const paginationConfig = reactive({ current_page: 1, @@ -258,7 +297,14 @@ function getList(bool?: boolean) { }) } +function getDetail() { + dataset.asyncGetDatesetDetail(id, loading).then((res: any) => { + datasetDetail.value = res.data + }) +} + onMounted(() => { + getDetail() getList() // 初始化定时任务 initInterval() From 65136549be05ca88d350f59f3b4c176785a8e1f9 Mon Sep 17 00:00:00 2001 From: wangdan-fit2cloud Date: Wed, 10 Jan 2024 18:36:04 +0800 Subject: [PATCH 2/6] =?UTF-8?q?feat:=20web=E7=9F=A5=E8=AF=86=E5=BA=93?= =?UTF-8?q?=E8=AE=BE=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ui/src/api/dataset.ts | 2 +- ui/src/views/dataset/DatasetSetting.vue | 28 +++++++++++++++++-------- ui/src/views/dataset/step/StepFirst.vue | 12 +++++------ 3 files changed, 26 insertions(+), 16 deletions(-) diff --git a/ui/src/api/dataset.ts b/ui/src/api/dataset.ts index 60b0b46fc..b05dab50f 100644 --- a/ui/src/api/dataset.ts +++ b/ui/src/api/dataset.ts @@ -82,7 +82,7 @@ const postDateset: (data: datasetData, loading?: Ref) => Promise - + @@ -97,12 +97,12 @@ const detail = ref({}) const application_list = ref>([]) const application_id_list = ref([]) const form = ref({ - url: '', + source_url: '', selector: '' }) const rules = reactive({ - url: [{ required: true, message: '请输入 Web 根地址', trigger: 'blur' }] + source_url: [{ required: true, message: '请输入 Web 根地址', trigger: 'blur' }] }) async function submit() { @@ -110,10 +110,16 @@ async function submit() { await webFormRef.value.validate((valid: any) => { if (valid) { loading.value = true - const obj = { - application_id_list: application_id_list.value, - ...BaseFormRef.value.form - } + const obj = + detail.value.type === '1' + ? { + ...BaseFormRef.value.form, + ...form.value + } + : { + application_id_list: application_id_list.value, + ...BaseFormRef.value.form + } datasetApi .putDateset(id, obj) .then((res) => { @@ -131,6 +137,10 @@ async function submit() { function getDetail() { dataset.asyncGetDatesetDetail(id, loading).then((res: any) => { detail.value = res.data + if (detail.value.type === '1') { + form.value = res.data.meta + } + application_id_list.value = res.data?.application_id_list datasetApi.listUsableApplication(id, loading).then((ok) => { application_list.value = ok.data diff --git a/ui/src/views/dataset/step/StepFirst.vue b/ui/src/views/dataset/step/StepFirst.vue index f6fa30811..f5eaebfcc 100644 --- a/ui/src/views/dataset/step/StepFirst.vue +++ b/ui/src/views/dataset/step/StepFirst.vue @@ -43,11 +43,11 @@ - + @@ -88,12 +88,12 @@ const loading = ref(false) const form = ref({ type: '0', - url: '', + source_url: '', selector: '' }) const rules = reactive({ - url: [{ required: true, message: '请输入 Web 根地址', trigger: 'blur' }] + source_url: [{ required: true, message: '请输入 Web 根地址', trigger: 'blur' }] }) watch(form.value, (value) => { @@ -106,7 +106,7 @@ watch(form.value, (value) => { function radioChange() { dataset.saveDocumentsFile([]) - form.value.url = '' + form.value.source_url = '' form.value.selector = '' } From 6503132492cce300ee485d55aacaab98a5490a1a Mon Sep 17 00:00:00 2001 From: wangdan-fit2cloud Date: Thu, 11 Jan 2024 14:40:00 +0800 Subject: [PATCH 3/6] feat: --- ui/src/api/document.ts | 11 ++- .../views/dataset/component/SyncWebDialog.vue | 1 - .../component/ImportDocumentDialog.vue | 88 +++++++++++++++++++ ui/src/views/document/index.vue | 13 ++- 4 files changed, 110 insertions(+), 3 deletions(-) create mode 100644 ui/src/views/document/component/ImportDocumentDialog.vue diff --git a/ui/src/api/document.ts b/ui/src/api/document.ts index 4e16522cf..06580d269 100644 --- a/ui/src/api/document.ts +++ b/ui/src/api/document.ts @@ -109,7 +109,16 @@ const delDocument: (dataset_id: string, document_id: string) => Promise { return del(`${prefix}/${dataset_id}/document/${document_id}`) } - +// /** +// * 批量删除文档 +// * @param 参数 dataset_id, document_id, +// */ +// const delDocument: (dataset_id: string, document_id: string) => Promise> = ( +// dataset_id, +// document_id +// ) => { +// return del(`${prefix}/${dataset_id}/document/${document_id}`) +// } /** * 文档详情 * @param 参数 dataset_id diff --git a/ui/src/views/dataset/component/SyncWebDialog.vue b/ui/src/views/dataset/component/SyncWebDialog.vue index 674109252..48bc1b64d 100644 --- a/ui/src/views/dataset/component/SyncWebDialog.vue +++ b/ui/src/views/dataset/component/SyncWebDialog.vue @@ -60,7 +60,6 @@ const open = (id: string) => { const submit = () => { dataset.asyncSyncDateset(datasetId.value, method.value, loading).then((res: any) => { - // MsgSuccess('删除成功') emit('refresh', res.data) dialogVisible.value = false }) diff --git a/ui/src/views/document/component/ImportDocumentDialog.vue b/ui/src/views/document/component/ImportDocumentDialog.vue new file mode 100644 index 000000000..674109252 --- /dev/null +++ b/ui/src/views/document/component/ImportDocumentDialog.vue @@ -0,0 +1,88 @@ + + + diff --git a/ui/src/views/document/index.vue b/ui/src/views/document/index.vue index 540e40a66..d8a8f01a5 100644 --- a/ui/src/views/document/index.vue +++ b/ui/src/views/document/index.vue @@ -12,7 +12,7 @@ > 导入文档 - 批量删除 + 批量删除
+