From 7c666a5083125a4cfd68145d2b7a7a7d5f5f7ebf Mon Sep 17 00:00:00 2001
From: zhangxiao <898441624@qq.com>
Date: 星期一, 26 八月 2024 16:44:56 +0800
Subject: [PATCH] Merge branch 'master' of http://192.168.5.5:10010/r/web/flow_web

---
 src/views/dmx/knowledgeLib/index.vue |  349 +++++++++++++++++++++++++++++++++++++++++++++-------------
 1 files changed, 271 insertions(+), 78 deletions(-)

diff --git a/src/views/dmx/knowledgeLib/index.vue b/src/views/dmx/knowledgeLib/index.vue
index 442ca87..226808d 100644
--- a/src/views/dmx/knowledgeLib/index.vue
+++ b/src/views/dmx/knowledgeLib/index.vue
@@ -88,6 +88,32 @@
                                   type="text"
                                   class="button"
                                   style="color: #2a2a2b"
+                                  @click="enableDisable(1)"
+                                >
+                                  <template #icon>
+                                    <icon-play-circle />
+                                  </template>
+                                  鍚敤
+                                </a-button>
+                              </p>
+                              <p>
+                                <a-button
+                                  type="text"
+                                  class="button"
+                                  style="color: #2a2a2b"
+                                  @click="enableDisable(0)"
+                                >
+                                  <template #icon>
+                                    <icon-record color="" />
+                                  </template>
+                                  绂佺敤
+                                </a-button>
+                              </p>
+                              <p>
+                                <a-button
+                                  type="text"
+                                  class="button"
+                                  style="color: #2a2a2b"
                                   @click="addBlock(1)"
                                 >
                                   <template #icon>
@@ -272,6 +298,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 +309,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 +338,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 +363,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 +388,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 +413,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 +436,7 @@
                           type="text"
                           size="large"
                           @click="run(record)"
+                          v-hasPermi="'/kb/data_analysis'"
                           :loading="record.loading"
                         >
                           <template #icon>
@@ -369,39 +464,57 @@
                     </div>
                   </template>
                   <template #action="{ record }">
-                    <tool
-                      :kbtenantInfo="kbtenantInfo"
+                    <a-tooltip content="瑙f瀽鏂规硶">
+                      <a-button
+                        type="text"
+                        :disabled="record.run == '1'"
+                        @click="handleClick(record)"
+                        v-hasPermi="'/kb/data_update'"
+                        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-button
-                      type="text"
-                      size="small"
-                      :disabled="record.run == '1'"
-                      @click="onDownloadDocument(record)"
-                    >
-                      <template #icon>
-                        <icon-download />
-                      </template>
-                    </a-button>
+                    </a-tooltip>
 
-                    <a-button
+                    <!-- <a-button
                       type="text"
                       size="small"
                       :disabled="record.run == '1'"
@@ -410,13 +523,17 @@
                       <template #icon>
                         <icon-eye />
                       </template>
-                    </a-button>
+                    </a-button> -->
                   </template>
                 </a-table>
               </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 +542,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 +599,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>-->
+<!--      &lt;!&ndash;      <docx  previewSrc="http://192.168.20.116:1080/v1/document/get/405c3efa4d8c11ef97560242ac120006"></docx>&ndash;&gt;-->
+<!--      <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 +623,7 @@
     nextTick,
     onBeforeMount,
     onMounted,
+    onBeforeUnmount,
   } from 'vue';
   import { useI18n } from 'vue-i18n';
   import useLoading from '@/hooks/loading';
@@ -513,6 +641,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 +654,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 +684,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,12 +704,13 @@
   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',
     img2txt_id: 'qwen-vl-max',
     llm_id: 'qwen-plus',
-    name: 'wanghao鈥榮 Kingdom',
+    name: 'wanghaos Kingdom',
     parser_ids:
       'naive:General,qa:Q&A,resume:Resume,manual:Manual,table:Table,paper:Paper,book:Book,laws:Laws,presentation:Presentation,picture:Picture,one:One',
     rerank_id: 'BAAI/bge-reranker-v2-m3',
@@ -587,23 +719,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 +771,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 +788,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 +866,38 @@
         });
         // console.log(renderData.value, 'renderData');
 
+        pagination.page = params.page;
         pagination.current = params.page;
         pagination.total = data.data.total;
+
+        if (timer) {
+          clearInterval(timer);
+        }
+        // 瀹氭椂鍣ㄦ煡璇㈡枃妗�
+        timer = setInterval(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');
+          }
+        }, 10000);
       }
     } catch (err) {
       // you can report use errorHandler or other
@@ -732,20 +907,22 @@
   };
 
   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 +934,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 +945,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 +977,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 +1034,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 +1083,7 @@
             }
           });
         });
-        fetchData({
-          kb_id: tabs.value[selectedTab.value].id,
-          page: 1,
-          page_size: 20,
-        });
+        getKbList();
       } else {
         // Message.error('瑙f瀽澶辫触');
         // row.run = '1';
@@ -912,16 +1100,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,14 +1172,13 @@
       // console.log(kbobj, 'kbobj');
       fetchData({
         kb_id: kbobj.id,
-        page: 1,
-        page_size: 20,
+        ...basePagination,
       });
     }
   };
   const onDownloadDocument = async (record) => {
     console.log(record);
-    downloadFile({
+    await downloadFile({
       url: `/api/v1/document/get/${record.id}`,
       filename: record.name,
     });
@@ -1045,10 +1235,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 +1249,10 @@
   };
 
   const changeFetchData = async (row) => {
+    basePagination.page = 1;
     fetchData({
       kb_id: kbobj.id,
-      page: 1,
-      page_size: 20,
+      ...basePagination,
     });
   };
   watch(
@@ -1086,6 +1276,9 @@
   onMounted(() => {
     knowledgeData();
   });
+  onBeforeUnmount(() => {
+    clearInterval(timer);
+  });
 </script>
 
 <style scoped lang="less">

--
Gitblit v1.8.0