From ff0ae974a1c561eaf2915988dac63cd066af189f Mon Sep 17 00:00:00 2001 From: yinbangzhong <zhongbangyin@126.com> Date: 星期四, 12 九月 2024 09:23:44 +0800 Subject: [PATCH] bug fix --- src/views/dmx/knowledgeLib/index.vue | 351 +++++++++++++++++++++++++++++++++++++++++++++------------ 1 files changed, 275 insertions(+), 76 deletions(-) diff --git a/src/views/dmx/knowledgeLib/index.vue b/src/views/dmx/knowledgeLib/index.vue index dcf6bcd..4beaa09 100644 --- a/src/views/dmx/knowledgeLib/index.vue +++ b/src/views/dmx/knowledgeLib/index.vue @@ -23,8 +23,9 @@ :class="{ active: selectedTab === index }" > {{ tab.name }} - <a-popover position="bl"> + <a-popover position="bl" > <icon-more + v-hasPermi="'/kb/delete'" :style="{ position: 'absolute', top: '10px', right: '10px' }" /> <template #content> @@ -34,6 +35,7 @@ <span style="cursor: pointer; color: #4977ba; font-size: 12px" @click="deleteKnowledge(tab.id)" + v-hasPermi="'/kb/delete'" ><icon-delete style="font-size: 14px" />鍒犻櫎</span > </template> @@ -88,6 +90,35 @@ type="text" class="button" style="color: #2a2a2b" + v-hasPermi="'/kb/data_status'" + @click="enableDisable(1)" + > + <template #icon> + <icon-play-circle /> + </template> + 鍚敤 + </a-button> + </p> + <p> + <a-button + type="text" + class="button" + style="color: #2a2a2b" + v-hasPermi="'/kb/data_status'" + @click="enableDisable(0)" + > + <template #icon> + <icon-record color="" /> + </template> + 绂佺敤 + </a-button> + </p> + <p> + <a-button + type="text" + class="button" + style="color: #2a2a2b" + v-hasPermi="'/kb/data_analysis'" @click="addBlock(1)" > <template #icon> @@ -101,6 +132,7 @@ type="text" class="button" style="color: #2a2a2b" + v-hasPermi="'/kb/data_analysis'" @click="addBlock(2)" > <template #icon> @@ -114,6 +146,7 @@ <a-button type="text" class="button" + v-hasPermi="'/kb/data_delete'" style="color: #2a2a2b" @click="addBlock(3)" > @@ -272,6 +305,7 @@ <template #status="{ record }"> <a-switch v-model="record.status" + :disabled="!getAut('/kb/data_status')" size="small" checked-value="1" unchecked-value="0" @@ -282,14 +316,25 @@ <div style="display: flex; align-items: center"> <div style="width: 100px"> <a-popover title="" v-if="record.run == '4'"> - <a-tag - :loading="record.loading" - :color="'blue'" - border - >{{ $t('dmx.list.complete') }}</a-tag + <a-tag :loading="record.loading" :color="'red'" border + >澶辫触</a-tag > <template #content> - <p></p> + <p>娴佺▼寮�濮嬩簬锛歿{ record.process_begin_at }}</p> + <p + >杩囩▼鎸佺画鏃堕棿:{{ + record.process_duation.toFixed(2) + }}</p + > + <div> + <p + >杩涘害娑堟伅锛�<span + v-html=" + record.progress_msg.replace(/\n/g, '<br/>') + " + ></span + ></p> + </div> </template> </a-popover> <a-popover title="" v-if="record.run == '3'"> @@ -300,7 +345,21 @@ >{{ $t('dmx.list.complete') }}</a-tag > <template #content> - <p></p> + <p>娴佺▼寮�濮嬩簬锛歿{ record.process_begin_at }}</p> + <p + >杩囩▼鎸佺画鏃堕棿:{{ + record.process_duation.toFixed(2) + }}</p + > + <div> + <p + >杩涘害娑堟伅锛�<span + v-html=" + record.progress_msg.replace(/\n/g, '<br/>') + " + ></span + ></p> + </div> </template> </a-popover> <a-popover title="" v-if="record.run == '1'"> @@ -311,7 +370,21 @@ >瑙f瀽涓�...</a-tag > <template #content> - <p></p> + <p>娴佺▼寮�濮嬩簬锛歿{ record.process_begin_at }}</p> + <p + >杩囩▼鎸佺画鏃堕棿:{{ + record.process_duation.toFixed(2) + }}</p + > + <div> + <p + >杩涘害娑堟伅锛�<span + v-html=" + record.progress_msg.replace(/\n/g, '<br/>') + " + ></span + ></p> + </div> </template> </a-popover> <a-popover title="" v-if="record.run == '2'"> @@ -322,7 +395,21 @@ >{{ $t('dmx.list.cancel') }}</a-tag > <template #content> - <p></p> + <p>娴佺▼寮�濮嬩簬锛歿{ record.process_begin_at }}</p> + <p + >杩囩▼鎸佺画鏃堕棿:{{ + record.process_duation.toFixed(2) + }}</p + > + <div> + <p + >杩涘害娑堟伅锛�<span + v-html=" + record.progress_msg.replace(/\n/g, '<br/>') + " + ></span + ></p> + </div> </template> </a-popover> <a-popover title="" v-if="record.run == '0'"> @@ -333,7 +420,21 @@ >{{ $t('dmx.list.NotStarted') }} </a-tag> <template #content> - <p></p> + <p>娴佺▼寮�濮嬩簬锛歿{ record.process_begin_at }}</p> + <p + >杩囩▼鎸佺画鏃堕棿锛歿{ + record.process_duation.toFixed(2) + }}</p + > + <div> + <p + >杩涘害娑堟伅锛�<span + v-html=" + record.progress_msg.replace(/\n/g, '<br/>') + " + ></span + ></p> + </div> </template> </a-popover> </div> @@ -342,6 +443,7 @@ type="text" size="large" @click="run(record)" + v-hasPermi="'/kb/data_analysis'" :loading="record.loading" > <template #icon> @@ -369,39 +471,57 @@ </div> </template> <template #action="{ record }"> - <tool - :kbtenantInfo="kbtenantInfo" + <a-tooltip content="瑙f瀽鏂规硶"> + <a-button + type="text" + :disabled="record.run == '1'" + @click="handleClick(record)" + 鏌� + size="small" + > + <template #icon> + <icon-tool /> + </template> + </a-button> + </a-tooltip> + <edit :item="record" - :kbdetail="kbdetail" + v-hasPermi="'/kb/rename'" + @upTabdateItem="upTabdateItem" /> - <edit :item="record" @upTabdateItem="upTabdateItem" /> <a-popconfirm :content="'纭畾鍒犻櫎鍚�'" type="warning" @ok="deleteItem(record)" > + <a-tooltip content="鍒犻櫎"> + <a-button + type="text" + size="small" + :disabled="record.run == '1'" + v-hasPermi="'/kb/data_delete'" + > + <template #icon> + <icon-delete /> + </template> + </a-button> + </a-tooltip> + </a-popconfirm> + <a-tooltip content="涓嬭浇"> <a-button type="text" size="small" + v-hasPermi="'/kb/data_download'" :disabled="record.run == '1'" + @click="onDownloadDocument(record)" > <template #icon> - <icon-delete /> + <icon-download /> </template> </a-button> - </a-popconfirm> + </a-tooltip> + <!-- <a-button - type="text" - size="small" - :disabled="record.run == '1'" - @click="onDownloadDocument(record)" - > - <template #icon> - <icon-download /> - </template> - </a-button> - - <!-- <a-button type="text" size="small" :disabled="record.run == '1'" @@ -416,7 +536,11 @@ </a-card> </a-scrollbar> </a-tab-pane> - <a-tab-pane key="2" :title="t('dmx.list.test')"> + <a-tab-pane + key="2" + :title="t('dmx.list.test')" + v-if="getAut('/kb/test')" + > <a-scrollbar class="rt-container-main" :style="{ height: documentHeight + 70 + 'px' }" @@ -425,7 +549,11 @@ <test ref="testForm"></test> </a-scrollbar> </a-tab-pane> - <a-tab-pane key="3" :title="t('dmx.list.disposition')"> + <a-tab-pane + key="3" + :title="t('dmx.list.disposition')" + v-if="getAut('/kb/update')" + > <a-scrollbar class="rt-container-main" :style="{ height: documentHeight + 70 + 'px' }" @@ -478,12 +606,18 @@ <!-- </div>--> </div> </div> - <a-modal title=" " v-model:visible="visible" :footer="false" fullscreen> - <!-- <docx previewSrc="http://192.168.20.116:1080/v1/document/get/405c3efa4d8c11ef97560242ac120006"></docx>--> - <docx v-if="documenttype == 'docx'" :previewSrc="previewSrc"></docx> - <excel v-if="documenttype == 'excel'" :previewSrc="previewSrc"></excel> - <txtPdf v-if="documenttype == 'txtPdf'" :previewSrc="previewSrc"></txtPdf> - </a-modal> + <!-- <a-modal title=" " v-model:visible="visible" :footer="false" fullscreen>--> + <!-- <!– <docx previewSrc="http://192.168.20.116:1080/v1/document/get/405c3efa4d8c11ef97560242ac120006"></docx>–>--> + <!-- <docx v-if="documenttype == 'docx'" :previewSrc="previewSrc"></docx>--> + <!-- <excel v-if="documenttype == 'excel'" :previewSrc="previewSrc"></excel>--> + <!-- <txtPdf v-if="documenttype == 'txtPdf'" :previewSrc="previewSrc"></txtPdf>--> + <!-- </a-modal>--> + <tool + ref="toolForm" + :kbtenantInfo="kbtenantInfo" + :item="setObj" + :kbdetail="kbdetail" + /> </div> </template> @@ -496,6 +630,7 @@ nextTick, onBeforeMount, onMounted, + onBeforeUnmount, } from 'vue'; import { useI18n } from 'vue-i18n'; import useLoading from '@/hooks/loading'; @@ -513,6 +648,7 @@ kbdocumentchangeStatus, downloadFile, chunkSwitch, + changeStatus, } from '@/api/kbList'; import { Pagination } from '@/types/global'; import type { SelectOptionData } from '@arco-design/web-vue/es/select/interface'; @@ -525,13 +661,14 @@ import config from '@/views/dmx/knowledgeLib/config.vue'; import test from '@/views/dmx/knowledgeLib/test.vue'; import tool from '@/views/dmx/knowledgeLib/tool.vue'; - import docx from '@/views/dmx/knowledgeLib/components/docx.vue'; - import excel from '@/views/dmx/knowledgeLib/components/excel.vue'; - import txtPdf from '@/views/dmx/knowledgeLib/components/txtPdf.vue'; + // import docx from '@/views/dmx/knowledgeLib/components/docx.vue'; + // import excel from '@/views/dmx/knowledgeLib/components/excel.vue'; + // import txtPdf from '@/views/dmx/knowledgeLib/components/txtPdf.vue'; import { Message, Modal } from '@arco-design/web-vue'; import { documentHeight, parseTime } from '@/utils'; import { deleteLlm } from '@/api/model'; import { userModelState } from '@/store'; + import { getUserResources } from '@/utils/auth'; let modelStore = userModelState(); const httpUrl = modelStore.hrefUrl; @@ -554,6 +691,7 @@ const formModel = ref(generateFormModel()); const cloneColumns = ref([]); const showColumns = ref<Column[]>([]); + let setObj = reactive({}); const size = ref<SizeProps>('medium'); let visible = ref(false); @@ -573,6 +711,7 @@ let kbdetail = reactive({}); let parser_ids = reactive({}); let seeObj = reactive({}); + let toolForm = ref(null); let kbtenantInfo = reactive({ asr_id: 'paraformer-realtime-8k-v1', embd_id: 'BAAI/bge-large-zh-v1.5', @@ -587,23 +726,31 @@ parser_idObj: {}, }); let tabs = ref([]); + let timer = null; // 瀹氭椂鍣� const selectTab = (index, item) => { selectedTab.value = index; + checkedArr.value = []; // console.log(item.id); kbobj = item; kbId = kbobj.id; + basePagination.page = 1; fetchData({ kb_id: kbobj.id, - page: 1, - page_size: 20, + ...basePagination, }); getKbdetail(kbobj.id); }; + const getAut = (val) => { + const roleData = JSON.parse(getUserResources()); + const roleBtn = roleData.map((item: any) => item.component); + return roleBtn.includes(val); + }; + const basePagination: Pagination = { - current: 1, - pageSize: 20, + page: 1, + page_size: 10, }; const pagination = reactive({ ...basePagination, @@ -631,10 +778,12 @@ title: t('dmx.column.name'), dataIndex: 'name', slotName: 'name', + width: 300, }, { title: t('鍒嗗揩鏁�'), dataIndex: 'chunk_num', + width: 90, }, { title: t('dmx.column.UploadTime'), @@ -646,16 +795,19 @@ title: t('瑙f瀽鏂规硶'), dataIndex: 'parser_id', slotName: 'parser_id', + width: 150, }, { title: t('鍚敤'), dataIndex: 'status', slotName: 'status', + width: 100, }, { title: t('瑙f瀽鐘舵��'), dataIndex: 'run', slotName: 'run', + width: 100, }, { title: t('dmx.column.Operate'), @@ -721,8 +873,12 @@ }); // console.log(renderData.value, 'renderData'); + pagination.page = params.page; pagination.current = params.page; pagination.total = data.data.total; + + // 瀹氭椂鍣ㄦ煡璇㈡枃妗� + documentList() } } catch (err) { // you can report use errorHandler or other @@ -731,21 +887,48 @@ } }; + const documentList= async () => { + let params = { ...basePagination, kb_id: kbobj.id }; + const data = await queryKbDocumentList(params); + if (data.code == '0') { + parser_ids = kbtenantInfo.parser_ids + .split(',') + .reduce((acc, pair) => { + const [key, value] = pair.split(':'); + acc[key] = value; + return acc; + }, {}); + // console.log(parser_ids, 'parser_ids'); + kbtenantInfo.parser_idObj = parser_ids; + renderData.value = data.data.docs || []; + renderData.value = renderData.value.map((item) => { + return { + ...item, + loading: false, + parser_id: parser_ids[item.parser_id], + }; + }); + // console.log(renderData.value, 'renderData'); + } + } + const search = () => { + basePagination.page = 1; fetchData({ kb_id: kbobj.id, - page: 1, - page_size: 20, + ...basePagination, keywords: keywords.value, }); }; - const handleClick = () => { - visible.value = true; + const handleClick = (data) => { + Object.assign(setObj, data); + toolForm.value.handleClick(data); }; const onPageChange = (current: number) => { - fetchData({ ...basePagination, current }); + basePagination.page = current; + fetchData({ ...basePagination, kb_id: kbobj.id }); }; const selectTabAll = (val) => { @@ -757,7 +940,7 @@ checkedArr.value = val; }; - const knowledgeData = async (params = { page: 1, page_size: 20 }) => { + const knowledgeData = async (params = { page: 1, page_size: 10 }) => { listloading.value = true; try { const { data } = await queryKbList(params); @@ -768,10 +951,10 @@ kbobj = tabs.value[0]; kbId = kbobj.id; activeKey.value = '1'; + basePagination.page = 1; fetchData({ kb_id: kbobj.id, - page: 1, - page_size: 20, + ...basePagination, }); getKbdetail(kbobj.id); } else { @@ -800,13 +983,15 @@ const getknowledge = async (id) => { setLoading(true); try { - const { data } = await queryKbList({ page: 1, page_size: 20 }); + const { data } = await queryKbList({ page: 1, page_size: 10 }); + console.log(data, '鏌ヨ鐭ヨ瘑搴撳垪琛�'); tabs.value = data; if (tabs.value.length > 0) { // 瀹氫綅鍒版柊澧炵殑鐭ヨ瘑搴撳崟鍏� selectedTab.value = tabs.value.findIndex((item) => item.id == id); getKbdetail(id); // 鑾峰彇璇︽儏 + kbobj.id = id; activeKey.value = '3'; } } catch (err) { @@ -855,24 +1040,37 @@ const cancleConfig = () => { activeKey.value = '1'; let id = tabs.value[selectedTab.value].id; - fetchData({ - kb_id: id, - page: 1, - page_size: 20, - }); + // basePagination.page = 1; + // fetchData({ + // kb_id: id, + // ...basePagination, + // }); }; const saveConfig = async () => { activeKey.value = '1'; let id = tabs.value[selectedTab.value].id; - const { data } = await queryKbList({ page: 1, page_size: 20 }); + const { data } = await queryKbList({ page: 1, page_size: 10 }); tabs.value = data; fetchData({ kb_id: id, - page: 1, - page_size: 20, + ...basePagination, }); getKbdetail(id); // 鑾峰彇璇︽儏 + }; + + const enableDisable = async (type) => { + Promise.all( + checkedArr.value.map(async (item) => { + await changeStatus({ + doc_id: item, + status: type, + }); + }) + ).then(() => { + Message.success('鏇存柊鎴愬姛'); + getKbList(); + }); }; //鎵归噺鍚敤鍒犻櫎绂佺敤 @@ -891,11 +1089,7 @@ } }); }); - fetchData({ - kb_id: tabs.value[selectedTab.value].id, - page: 1, - page_size: 20, - }); + getKbList(); } else { // Message.error('瑙f瀽澶辫触'); // row.run = '1'; @@ -912,16 +1106,19 @@ let data = await kbdocumentrm({ doc_id: checkedArr.value }); if (data.code == 0) { Message.success('鍒犻櫎鎴愬姛'); - fetchData({ - kb_id: tabs.value[selectedTab.value].id, - page: 1, - page_size: 20, - }); + getKbList(); } }, onCancel: () => {}, }); } + }; + + const getKbList = async () => { + await fetchData({ + kb_id: tabs.value[selectedTab.value].id, + ...basePagination, + }); }; const exchangeArray = <T extends Array<any>>( @@ -981,8 +1178,7 @@ // console.log(kbobj, 'kbobj'); fetchData({ kb_id: kbobj.id, - page: 1, - page_size: 20, + ...basePagination, }); } }; @@ -1045,10 +1241,10 @@ run: run, }); if (data.code == 0) { + // 瀹氭椂鍣ㄦ煡璇㈠綋鍓嶅垪琛� fetchData({ kb_id: tabs.value[selectedTab.value].id, - page: 1, - page_size: 20, + ...basePagination, }); } else { // Message.error('瑙f瀽澶辫触'); @@ -1059,10 +1255,10 @@ }; const changeFetchData = async (row) => { + basePagination.page = 1; fetchData({ kb_id: kbobj.id, - page: 1, - page_size: 20, + ...basePagination, }); }; watch( @@ -1086,6 +1282,9 @@ onMounted(() => { knowledgeData(); }); + onBeforeUnmount(() => { + clearInterval(timer); + }); </script> <style scoped lang="less"> -- Gitblit v1.8.0