From 8a04328fbba2139f399cb85ea9581adbe8d7e8c6 Mon Sep 17 00:00:00 2001
From: liudong <liudong>
Date: 星期六, 27 七月 2024 22:43:45 +0800
Subject: [PATCH] 知识库页面接口调用开发
---
src/utils/index.ts | 45 +++++++++
src/api/kbList.ts | 69 ++++++++++++-
src/views/dmx/knowledgeLib/addKnow.vue | 16 ++
src/api/interceptor.ts | 1
src/views/dmx/knowledgeLib/index.vue | 116 ++++++++++++++++-------
5 files changed, 205 insertions(+), 42 deletions(-)
diff --git a/src/api/interceptor.ts b/src/api/interceptor.ts
index 09e9392..28f64cb 100644
--- a/src/api/interceptor.ts
+++ b/src/api/interceptor.ts
@@ -37,6 +37,7 @@
}
config.headers.Authorization = `${authorization}`;
}
+ config.headers.Authorization = 'Ijg3NmFjZjJlNGIzMzExZWY4NzI0MDI0MmFjMTIwMDA2Ig.ZqNvxw.Kgp8PcT4n2cxpzxFrYHttO4i2Eo';
return config;
},
(error) => {
diff --git a/src/api/kbList.ts b/src/api/kbList.ts
index 7e5fbe1..2bb7fef 100644
--- a/src/api/kbList.ts
+++ b/src/api/kbList.ts
@@ -22,28 +22,87 @@
list: PolicyRecord[];
total: number;
}
-
+// 鐭ヨ瘑搴撳垪琛ㄦ帴鍙�
export function queryKbList(params) {
return axios.get('/api/v1/kb/list', {
params
});
}
-
+// 鐭ヨ瘑搴撹鎯呮帴鍙�
export function queryKbdetail(params) {
return axios.get('/api/v1/kb/detail', {
params
});
}
-
+// 淇℃伅鎺ュ彛
export function queryKbtenantInfo(params) {
return axios.get('/api/v1/user/tenant_info', {
params
});
}
-
+// 鏂囨。鍒楄〃鎺ュ彛
export function queryKbDocumentList(params) {
return axios.get('/api/v1/document/list', {
params
});
-}
\ No newline at end of file
+}
+
+// 鐭ヨ瘑搴撳垱寤烘帴鍙�
+export function kbcreate(params) {
+ return axios.post('/api/v1/kb/create', params);
+}
+// 鐭ヨ瘑搴撳垹闄ゆ帴鍙�
+export function deleteKnow(params) {
+ return axios.post('/api/v1/kb/rm', params);
+}
+//鐭ヨ瘑搴撴洿鏂版帴鍙�
+
+export function querykbupdate(params) {
+ return axios.post('/api/v1/kb/update', params);
+}
+
+// 鏂囨。涓婁紶鎺ュ彛
+
+export function kbdocumentupload(params) {
+ return axios.post('/api/v1/document/upload', params);
+}
+
+// 鏂囨。鍚姩/鍙栨秷瑙f瀽鎺ュ彛
+
+export function kbdocumentrun(params) {
+ return axios.post('/api/v1/document/run', params);
+}
+
+// 鏂囨。鍒犻櫎鎺ュ彛
+
+export function kbdocumentrm(params) {
+ return axios.post('/api/v1/document/rm', params);
+}
+
+
+// 鏂囦欢瑙f瀽鏂规硶鎺ュ彛
+export function kbdocumentrename(params) {
+ return axios.post('/api/v1/document/rename', params);
+}
+// 鏂囨。閲嶅懡鍚嶆帴鍙�
+export function kbdocumentchangeparser(params) {
+ return axios.post('/api/v1/document/change_parser', params);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/utils/index.ts b/src/utils/index.ts
index 197bab3..f4d32d8 100644
--- a/src/utils/index.ts
+++ b/src/utils/index.ts
@@ -22,4 +22,49 @@
'i'
);
+
+/**
+ * @description 鏍煎紡鍖栨椂闂�
+ * @param time
+ * @param cFormat
+ * @returns {string|null}
+ */
+export function parseTime(time, cFormat) {
+ if (arguments.length === 0) {
+ return null
+ }
+ const format = cFormat || '{y}-{m}-{d} {h}:{i}:{s}'
+ let date
+ if (typeof time === 'object') {
+ date = time
+ } else {
+ if (typeof time === 'string' && /^[0-9]+$/.test(time)) {
+ time = parseInt(time)
+ }
+ if (typeof time === 'number' && time.toString().length === 10) {
+ time = time * 1000
+ }
+ date = new Date(time)
+ }
+ const formatObj = {
+ y: date.getFullYear(),
+ m: date.getMonth() + 1,
+ d: date.getDate(),
+ h: date.getHours(),
+ i: date.getMinutes(),
+ s: date.getSeconds(),
+ a: date.getDay(),
+ }
+ return format.replace(/{([ymdhisa])+}/g, (result, key) => {
+ let value = formatObj[key]
+ if (key === 'a') {
+ return ['鏃�', '涓�', '浜�', '涓�', '鍥�', '浜�', '鍏�'][value]
+ }
+ if (result.length > 0 && value < 10) {
+ value = '0' + value
+ }
+ return value || 0
+ })
+}
+
export default null;
diff --git a/src/views/dmx/knowledgeLib/addKnow.vue b/src/views/dmx/knowledgeLib/addKnow.vue
index 07db2d2..f94af22 100644
--- a/src/views/dmx/knowledgeLib/addKnow.vue
+++ b/src/views/dmx/knowledgeLib/addKnow.vue
@@ -22,6 +22,8 @@
<script lang="ts" setup>
import { onMounted ,onBeforeMount, reactive, ref } from "vue";
+import { kbcreate } from "@/api/kbList";
+import { Message } from '@arco-design/web-vue';
const visible = ref(false);
const loading = ref(false);
@@ -43,8 +45,18 @@
}
-const handleSubmit = ({values, errors}) => {
- console.log('values:', values, '\nerrors:', errors)
+const emit = defineEmits(['knowledgeData'])
+
+const handleSubmit = async({values, errors}) => {
+ if(errors) return;
+ let data = await kbcreate({
+ name: values.name,
+ })
+ if(data.code == 0){
+ visible.value = false;
+ Message.success('鍒涘缓鎴愬姛');
+ emit("knowledgeData");
+ }
}
const handleClick = () => {
diff --git a/src/views/dmx/knowledgeLib/index.vue b/src/views/dmx/knowledgeLib/index.vue
index 1b5addd..07dba76 100644
--- a/src/views/dmx/knowledgeLib/index.vue
+++ b/src/views/dmx/knowledgeLib/index.vue
@@ -8,7 +8,7 @@
:placeholder="$t('cardList.searchInput.placeholder')"
style="width: 130px;"
/>
- <addKnow></addKnow>
+ <addKnow @knowledgeData="knowledgeData"></addKnow>
</div>
<div class="lf-container-down">
<div class="tabs">
@@ -20,6 +20,15 @@
:class="{ 'active': selectedTab === index }"
>
{{ tab.name }}
+ <a-popover position="bl">
+ <icon-more :style="{position: 'absolute',top:'10px',right:'20px'}"/>
+ <template #content>
+ <a-popconfirm content="纭畾鍒犻櫎鍚�?" @ok="deleteKnowledge(tab.id)" type="warning">
+ <span style="cursor: pointer;color: #0960bd;font-size: 12px"><icon-delete />鍒犻櫎</span>
+ </a-popconfirm>
+
+ </template>
+ </a-popover>
</div>
</div>
</div>
@@ -154,25 +163,28 @@
<!-- </span>-->
{{record.name}}
</template>
- <template #staue="{ record }">
- <a-switch :model-value="record.staue"/>
+ <template #create_time="{ record }">
+ <span>{{parseTime(record.create_time)}}</span>
</template>
<template #status="{ record }">
+ <a-switch v-model="record.status" checked-value="0" unchecked-value="1"/>
+ </template>
+ <template #run="{ record }">
<div style="display: flex;align-items: center;">
<div style="width: 100px">
- <a-popover title="Title">
+ <a-popover title="Title" v-if="record.run == '2'">
<a-tag :color="'blue'" border>{{$t('dmx.list.complete')}}</a-tag>
<template #content>
<p>Here is the text content</p>
</template>
</a-popover>
- <a-popover title="Title">
+ <a-popover title="Title" v-if="record.run == '1'">
<a-tag :color="'gold'" border>{{$t('dmx.list.cancel')}}</a-tag>
<template #content>
<p>Here is the text content</p>
</template>
</a-popover>
- <a-popover title="Title">
+ <a-popover title="Title" v-if="record.run == '0'">
<a-tag :color="'green'" border>{{$t('dmx.list.NotStarted')}}</a-tag>
<template #content>
<p>Here is the text content</p>
@@ -180,17 +192,17 @@
</a-popover>
</div>
<div>
- <a-button type="text" size="large">
+ <a-button type="text" size="large" v-if="record.run == '2'">
<template #icon>
<icon-sync />
</template>
</a-button>
- <a-button type="text" size="large">
+ <a-button type="text" size="large" v-if="record.run == '1'">
<template #icon>
<icon-sync style="color: green" />
</template>
</a-button>
- <a-button type="text" size="large">
+ <a-button type="text" size="large" v-if="record.run == '0'">
<template #icon>
<icon-play-circle style="color: green" />
</template>
@@ -198,11 +210,11 @@
</div>
</div>
</template>
- <template #operations="{ record }" >
+ <template #action="{ record }" >
<tool/>
<edit/>
- <a-popconfirm :content="t('dmx.list.EnsureDelete')" type="warning" @ok="deleteItem(record)">
- <a-button v-permission="['admin']" type="text" size="small">
+ <a-popconfirm :content="t('纭畾鍒犻櫎鍚�')" type="warning" @ok="deleteItem(record)">
+ <a-button type="text" size="small">
<template #icon>
<icon-delete />
</template>
@@ -274,7 +286,15 @@
import { computed, ref, reactive, watch, nextTick, onBeforeMount } from "vue";
import { useI18n } from 'vue-i18n';
import useLoading from '@/hooks/loading';
-import { queryKbList, PolicyRecord, PolicyParams, queryKbDocumentList } from "@/api/kbList";
+import {
+ queryKbList,
+ PolicyRecord,
+ PolicyParams,
+ queryKbDocumentList,
+ deleteKnow,
+ queryKbdetail,
+ queryKbtenantInfo
+} from "@/api/kbList";
import { Pagination } from '@/types/global';
import type { SelectOptionData } from '@arco-design/web-vue/es/select/interface';
import type { TableColumnData } from '@arco-design/web-vue/es/table/interface';
@@ -288,6 +308,8 @@
import tool from '@/views/dmx/knowledgeLib/tool.vue'
import addDetails from '@/views/dmx/knowledgeLib/addDetails.vue'
import { deleteAccount } from "@/api/account";
+import { Message } from "@arco-design/web-vue";
+import { parseTime } from "@/utils";
type SizeProps = 'mini' | 'small' | 'medium' | 'large';
type Column = TableColumnData & { checked?: true };
const account = ref(null)
@@ -305,7 +327,7 @@
const { t } = useI18n();
const renderData = ref([]);
const formModel = ref(generateFormModel());
- const cloneColumns = ref<Column[]>([]);
+ const cloneColumns = ref([]);
const showColumns = ref<Column[]>([]);
const size = ref<SizeProps>('medium');
@@ -357,36 +379,36 @@
},
{
title: t('鍒嗗揩鏁�'),
- dataIndex: 'contentType',
+ dataIndex: 'chunk_num',
},
{
title: t('dmx.column.UploadTime'),
- dataIndex: 'filterType',
+ dataIndex: 'create_time',
+ slotName: 'create_time',
+ width:200
},
{
- title: t('dmx.column.Founder'),
- dataIndex: 'count',
+ title: t('瑙f瀽鏂规硶'),
+ dataIndex: 'parser_id',
+ slotName: 'parser_id',
},
{
- title: t('dmx.column.Status'),
- dataIndex: 'createdTime',
- },
- {
- title: t('dmx.column.Enable'),
- dataIndex: 'staue',
- slotName: 'staue',
- },
- {
- title: t('dmx.column.ParseState'),
+ title: t('鍚敤'),
dataIndex: 'status',
+ slotName: 'status',
slotName: 'status',
},
{
+ title: t('瑙f瀽鐘舵��'),
+ dataIndex: 'run',
+ slotName: 'run',
+ },
+ {
title: t('dmx.column.Operate'),
- dataIndex: 'operations',
- slotName: 'operations',
+ dataIndex: 'action',
+ slotName: 'action',
width: 150,
- minWidth: 100,
+ minWidth: 150,
},
]);
const contentTypeOptions = computed<SelectOptionData[]>(() => [
@@ -432,6 +454,16 @@
renderData.value = data.data.docs||[];
pagination.current = params.page;
pagination.total = data.data.total;
+ // 鏌ヨ鐭ヨ瘑搴撹鎯�
+ const kbdetail = await queryKbdetail({
+ kb_id:params.kb_id,
+ });
+ // 璇︽儏
+ // const kbtenantInfo = await queryKbtenantInfo();
+
+
+
+
}
} catch (err) {
// you can report use errorHandler or other
@@ -441,10 +473,11 @@
};
const search = () => {
- fetchData({
- ...basePagination,
- ...formModel.value,
- });
+ alert(1)
+ // fetchData({
+ // ...basePagination,
+ // ...formModel.value,
+ // });
};
const handleClick = ()=>{
@@ -482,6 +515,19 @@
}
};
+ const deleteKnowledge = async (id) => {
+
+
+
+
+ let data = await deleteKnow({
+ kb_id:id
+ })
+ if(data.code == 0){
+ Message.success('鍒犻櫎鎴愬姛');
+ knowledgeData()
+ }
+ }
const reset = () => {
formModel.value = generateFormModel();
};
--
Gitblit v1.8.0