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