From ddfd2c45dea517f5330a2da02bba253479fe0fe0 Mon Sep 17 00:00:00 2001
From: zhangxiao <898441624@qq.com>
Date: 星期五, 23 八月 2024 19:24:06 +0800
Subject: [PATCH] fix: 权限

---
 src/views/dmx/knowledgeLib/index.vue |  731 +++++++++++++++++++++++++++++++++++++++++++++-----------
 1 files changed, 585 insertions(+), 146 deletions(-)

diff --git a/src/views/dmx/knowledgeLib/index.vue b/src/views/dmx/knowledgeLib/index.vue
index a1af5df..ca8e462 100644
--- a/src/views/dmx/knowledgeLib/index.vue
+++ b/src/views/dmx/knowledgeLib/index.vue
@@ -8,10 +8,13 @@
             :placeholder="$t('cardList.searchInput.placeholder')"
             style="width: 130px"
           />
-          <addKnow @knowledgeData="knowledgeData"></addKnow>
+          <addKnow
+            @getknowledge="getknowledge"
+            @getKbdetail="getKbdetail"
+          ></addKnow>
         </div>
-        <div class="lf-container-down">
-          <a-scrollbar style="height: 56rem; overflow: auto">
+        <a-spin :loading="listloading" class="lf-container-down">
+          <a-scrollbar style="height: calc(100vh - 300px); overflow: auto">
             <div
               class="tab"
               v-for="(tab, index) in tabs"
@@ -22,29 +25,31 @@
               {{ tab.name }}
               <a-popover position="bl">
                 <icon-more
-                  :style="{ position: 'absolute', top: '10px', right: '20px' }"
+                  :style="{ position: 'absolute', top: '10px', right: '10px' }"
                 />
                 <template #content>
-                  <a-popconfirm
-                    content="纭畾鍒犻櫎鍚�?"
-                    @ok="deleteKnowledge(tab.id)"
-                    type="warning"
+                  <!--                  <a-popconfirm content="纭畾鍒犻櫎鍚�?" @ok="deleteKnowledge(tab.id)" type="warning">-->
+                  <!--                    <span style="cursor: pointer;color: #4977ba;font-size: 12px"><icon-delete style="font-size: 14px"/>鍒犻櫎</span>-->
+                  <!--                  </a-popconfirm>-->
+                  <span
+                    style="cursor: pointer; color: #4977ba; font-size: 12px"
+                    @click="deleteKnowledge(tab.id)"
+                    ><icon-delete style="font-size: 14px" />鍒犻櫎</span
                   >
-                    <span
-                      style="cursor: pointer; color: #0960bd; font-size: 12px"
-                      ><icon-delete />鍒犻櫎</span
-                    >
-                  </a-popconfirm>
                 </template>
               </a-popover>
             </div>
           </a-scrollbar>
-        </div>
+        </a-spin>
       </div>
-      <div class="rt-container">
-        <a-tabs default-active-key="1">
+      <div class="rt-container" v-if="tabs.length > 0">
+        <a-tabs :active-key="activeKey" @change="handleTabChange">
           <a-tab-pane key="1" :title="t('dmx.list.DataSet')">
-            <div class="rt-container-main">
+            <a-scrollbar
+              class="rt-container-main"
+              :style="{ height: documentHeight + 70 + 'px' }"
+              style="overflow: auto"
+            >
               <a-card
                 ref="account"
                 class="general-card"
@@ -65,22 +70,102 @@
                           style="
                             margin-bottom: 10px;
                             display: flex;
-                            justify-content: right;
+                            justify-content: space-between;
                           "
                         >
-                          <a-input-search
-                            :placeholder="
-                              $t('cardList.searchInput.placeholder')
-                            "
-                            style="width: 200px; margin-right: 10px"
-                            v-model="keywords"
-                            @change="search"
-                          />
-                          <!--鏂板缓-->
-                          <add
-                            :kbobj="kbobj"
-                            @changeFetchData="changeFetchData"
-                          />
+                          <a-popover
+                            position="bottom"
+                            v-model="checkedArr.length"
+                            trigger="click"
+                          >
+                            <a-button :disabled="checkedArr.length == 0" border
+                              >鎵归噺
+                              <icon-down style="margin-left: 4px" />
+                            </a-button>
+                            <template #content>
+                              <p>
+                                <a-button
+                                  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>
+                                    <icon-check-circle />
+                                  </template>
+                                  鍚姩
+                                </a-button>
+                              </p>
+                              <p>
+                                <a-button
+                                  type="text"
+                                  class="button"
+                                  style="color: #2a2a2b"
+                                  @click="addBlock(2)"
+                                >
+                                  <template #icon>
+                                    <icon-close-circle />
+                                  </template>
+                                  鍙栨秷
+                                </a-button>
+                              </p>
+                              <a-divider style="margin: 10px 0" />
+                              <p>
+                                <a-button
+                                  type="text"
+                                  class="button"
+                                  style="color: #2a2a2b"
+                                  @click="addBlock(3)"
+                                >
+                                  <template #icon>
+                                    <icon-delete />
+                                  </template>
+                                  鍒犻櫎
+                                </a-button>
+                              </p>
+                            </template>
+                          </a-popover>
+                          <span>
+                            <a-input-search
+                              :placeholder="
+                                $t('cardList.searchInput.placeholder')
+                              "
+                              style="width: 200px; margin-right: 10px"
+                              v-model="keywords"
+                              @change="search"
+                            />
+                            <!--鏂板缓-->
+                            <add
+                              :kbobj="kbobj"
+                              @changeFetchData="changeFetchData"
+                            />
+                          </span>
                         </a-col>
                       </a-row>
                     </a-form>
@@ -120,13 +205,15 @@
                     <!--            {{ $t('searchTable.operation.download') }}-->
                     <!--          </a-button>-->
                     <a-tooltip :content="$t('searchTable.actions.refresh')">
-                      <div class="action-icon"><icon-refresh size="18" /></div>
+                      <div class="action-icon">
+                        <icon-refresh size="18" />
+                      </div>
                     </a-tooltip>
                     <a-dropdown @select="handleSelectDensity">
                       <a-tooltip :content="$t('searchTable.actions.density')">
-                        <div class="action-icon"
-                          ><icon-line-height size="18"
-                        /></div>
+                        <div class="action-icon">
+                          <icon-line-height size="18" />
+                        </div>
                       </a-tooltip>
                       <template #content>
                         <a-doption
@@ -184,7 +271,15 @@
                   :bordered="false"
                   :size="size"
                   @page-change="onPageChange"
-                  :scroll="{ y: 580 }"
+                  :max-height="documentHeight"
+                  :scroll="{ x: 1000 }"
+                  :row-selection="{
+                    type: 'checkbox',
+                    showCheckedAll: true,
+                    onlyCurrent: false,
+                  }"
+                  @select-all="selectTabAll"
+                  @selection-change="selectTabChange"
                 >
                   <template #name="{ record }">
                     <!--                    <icon-file style="color: #0960bd;margin-right: 4px;" />-->
@@ -203,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"
@@ -212,7 +308,7 @@
                   <template #run="{ record }">
                     <div style="display: flex; align-items: center">
                       <div style="width: 100px">
-                        <a-popover title="Title" v-if="record.run == '3'">
+                        <a-popover title="" v-if="record.run == '4'">
                           <a-tag
                             :loading="record.loading"
                             :color="'blue'"
@@ -220,10 +316,24 @@
                             >{{ $t('dmx.list.complete') }}</a-tag
                           >
                           <template #content>
-                            <p>Here is the text content</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="Title" v-if="record.run == '1'">
+                        <a-popover title="" v-if="record.run == '3'">
                           <a-tag
                             :loading="record.loading"
                             :color="'blue'"
@@ -231,10 +341,49 @@
                             >{{ $t('dmx.list.complete') }}</a-tag
                           >
                           <template #content>
-                            <p>Here is the text content</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="Title" v-if="record.run == '2'">
+                        <a-popover title="" v-if="record.run == '1'">
+                          <a-tag
+                            :loading="record.loading"
+                            :color="'blue'"
+                            border
+                            >瑙f瀽涓�...</a-tag
+                          >
+                          <template #content>
+                            <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'">
                           <a-tag
                             :loading="record.loading"
                             :color="'gold'"
@@ -242,18 +391,46 @@
                             >{{ $t('dmx.list.cancel') }}</a-tag
                           >
                           <template #content>
-                            <p>Here is the text content</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="Title" v-if="record.run == '0'">
+                        <a-popover title="" v-if="record.run == '0'">
                           <a-tag
                             :loading="record.loading"
                             :color="'green'"
                             border
-                            >{{ $t('dmx.list.NotStarted') }}</a-tag
-                          >
+                            >{{ $t('dmx.list.NotStarted') }}
+                          </a-tag>
                           <template #content>
-                            <p>Here is the text content</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>
@@ -262,15 +439,24 @@
                           type="text"
                           size="large"
                           @click="run(record)"
+                          v-hasPermi="'/kb/data_analysis'"
                           :loading="record.loading"
                         >
                           <template #icon>
+                            <icon-sync v-if="record.run == '4'" />
                             <icon-sync v-if="record.run == '3'" />
-                            <icon-sync v-if="record.run == '2'" />
                             <icon-sync
                               style="color: green"
-                              v-if="record.run == '1'"
+                              v-if="record.run == '2'"
                             />
+                            <a-button
+                              status="warning"
+                              shape="circle"
+                              v-if="record.run == '1'"
+                              size="small"
+                            >
+                              <icon-close />
+                            </a-button>
                             <icon-play-circle
                               style="color: green"
                               v-if="record.run == '0'"
@@ -281,18 +467,33 @@
                     </div>
                   </template>
                   <template #action="{ record }">
-                    <tool
-                      :kbtenantInfo="kbtenantInfo"
+                    <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>
+                    <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-button type="text" size="small">
+                      <a-button
+                        type="text"
+                        size="small"
+                        :disabled="record.run == '1'"
+                        v-hasPermi="'/kb/data_delete'"
+                      >
                         <template #icon>
                           <icon-delete />
                         </template>
@@ -301,6 +502,8 @@
                     <a-button
                       type="text"
                       size="small"
+                      v-hasPermi="'/kb/data_download'"
+                      :disabled="record.run == '1'"
                       @click="onDownloadDocument(record)"
                     >
                       <template #icon>
@@ -308,29 +511,51 @@
                       </template>
                     </a-button>
 
-                    <a-button type="text" size="small" @click="seeload(record)">
+                    <!-- <a-button
+                      type="text"
+                      size="small"
+                      :disabled="record.run == '1'"
+                      @click="previewArea(record)"
+                    >
                       <template #icon>
                         <icon-eye />
                       </template>
-                    </a-button>
+                    </a-button> -->
                   </template>
                 </a-table>
               </a-card>
-            </div>
+            </a-scrollbar>
           </a-tab-pane>
-          <a-tab-pane key="2" :title="t('dmx.list.test')">
-            <div class="rt-container-main">
+          <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' }"
+              style="overflow: auto"
+            >
               <test ref="testForm"></test>
-            </div>
+            </a-scrollbar>
           </a-tab-pane>
-          <a-tab-pane key="3" :title="t('dmx.list.disposition')">
-            <div class="rt-container-main">
+          <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' }"
+              style="overflow: auto"
+            >
               <config
                 ref="configForm"
                 :kbtenantInfo="kbtenantInfo"
-                :kbobj="kbobj"
+                @cancleConfig="cancleConfig"
+                @saveConfig="saveConfig"
               ></config>
-            </div>
+            </a-scrollbar>
           </a-tab-pane>
         </a-tabs>
         <!--        <div v-if="detailsShow" class="details">-->
@@ -372,11 +597,17 @@
       </div>
     </div>
     <a-modal title=" " v-model:visible="visible" :footer="false" fullscreen>
-      <!--      <docx v-if="documenttype=='docx'" previewSrc="http://192.168.20.116:1080/v1/document/get/405c3efa4d8c11ef97560242ac120006"></docx>-->
+      <!--      <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>
 
@@ -389,6 +620,7 @@
     nextTick,
     onBeforeMount,
     onMounted,
+    onBeforeUnmount,
   } from 'vue';
   import { useI18n } from 'vue-i18n';
   import useLoading from '@/hooks/loading';
@@ -405,6 +637,8 @@
     kbdocumentrun,
     kbdocumentchangeStatus,
     downloadFile,
+    chunkSwitch,
+    changeStatus,
   } from '@/api/kbList';
   import { Pagination } from '@/types/global';
   import type { SelectOptionData } from '@arco-design/web-vue/es/select/interface';
@@ -420,8 +654,14 @@
   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 } from '@arco-design/web-vue';
-  import { parseTime } from '@/utils';
+  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;
   type SizeProps = 'mini' | 'small' | 'medium' | 'large';
   type Column = TableColumnData & { checked?: true };
   const account = ref(null);
@@ -441,11 +681,16 @@
   const formModel = ref(generateFormModel());
   const cloneColumns = ref([]);
   const showColumns = ref<Column[]>([]);
+  let setObj = reactive({});
 
   const size = ref<SizeProps>('medium');
   let visible = ref(false);
+  let listloading = ref(false);
   let keywords = ref('');
+  let activeKey = ref('1');
   let detailsShow = ref(false);
+  let checkedAll = ref(false);
+  let checkedArr = ref([]);
   let selectedTab = ref(0);
   let testForm = ref(null);
   let configForm = ref(null);
@@ -456,12 +701,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',
@@ -470,24 +716,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;
-    testForm.value.changekbid(kbId);
-    configForm.value.changekbObj(kbobj);
+    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,
@@ -515,10 +768,12 @@
       title: t('dmx.column.name'),
       dataIndex: 'name',
       slotName: 'name',
+      width: 300,
     },
     {
       title: t('鍒嗗揩鏁�'),
       dataIndex: 'chunk_num',
+      width: 90,
     },
     {
       title: t('dmx.column.UploadTime'),
@@ -530,16 +785,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'),
@@ -587,10 +845,7 @@
     setLoading(true);
     try {
       const data = await queryKbDocumentList(params);
-      console.log(data, 'data');
       if (data.code == '0') {
-        //   璇︽儏
-        // const  kbtenantInfo  = await queryKbtenantInfo();
         parser_ids = kbtenantInfo.parser_ids.split(',').reduce((acc, pair) => {
           const [key, value] = pair.split(':');
           acc[key] = value;
@@ -606,14 +861,40 @@
             parser_id: parser_ids[item.parser_id],
           };
         });
-        console.log(renderData.value, 'renderData');
+        // console.log(renderData.value, 'renderData');
 
+        pagination.page = params.page;
         pagination.current = params.page;
         pagination.total = data.data.total;
-        //   鏌ヨ鐭ヨ瘑搴撹鎯�
-        kbdetail = await queryKbdetail({
-          kb_id: params.kb_id,
-        });
+
+        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
@@ -623,39 +904,51 @@
   };
 
   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 knowledgeData = async (params = { page: 1, page_size: 20 }) => {
-    setLoading(true);
+  const selectTabAll = (val) => {
+    console.log(val, '鍏ㄩ��');
+    checkedAll.value = val;
+  };
+  const selectTabChange = (val) => {
+    console.log(val, '鍗曢��');
+    checkedArr.value = val;
+  };
+
+  const knowledgeData = async (params = { page: 1, page_size: 10 }) => {
+    listloading.value = true;
     try {
       const { data } = await queryKbList(params);
-      console.log(data, 'data');
+      // console.log(data, 'data');
       tabs.value = data;
-      console.log(tabs.value, 'tabs');
+      // console.log(tabs.value, 'tabs');
       if (tabs.value.length > 0 && tabs.value[0]) {
         kbobj = tabs.value[0];
         kbId = kbobj.id;
-        testForm.value.changekbid(kbId);
-        configForm.value.changekbObj(kbobj);
+        activeKey.value = '1';
+        basePagination.page = 1;
         fetchData({
           kb_id: kbobj.id,
-          page: 1,
-          page_size: 20,
+          ...basePagination,
         });
+        getKbdetail(kbobj.id);
+      } else {
       }
       // renderData.value = data.list;
       // console.log(renderData, 'renderData');
@@ -664,22 +957,67 @@
     } catch (err) {
       // you can report use errorHandler or other
     } finally {
+      listloading.value = false;
+    }
+  };
+
+  const getKbdetail = async (kb_id) => {
+    //   鏌ヨ鐭ヨ瘑搴撹鎯�
+    const data = await queryKbdetail({
+      kb_id: kb_id,
+    });
+    kbdetail = data.data;
+    testForm.value.changekbid(kbdetail.id);
+    configForm.value.changekbObj(kbdetail);
+  };
+
+  const getknowledge = async (id) => {
+    setLoading(true);
+    try {
+      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); // 鑾峰彇璇︽儏
+        activeKey.value = '3';
+      }
+    } catch (err) {
+      // you can report use errorHandler or other
+    } finally {
       setLoading(false);
     }
   };
 
-  const deleteKnowledge = async (id) => {
-    let data = await deleteKnow({
-      kb_id: id,
+  const deleteKnowledge = (id) => {
+    Modal.confirm({
+      title: '鎻愮ず淇℃伅',
+      content: '纭鍒犻櫎鍚�',
+      okText: '纭畾',
+      cancelText: '鍙栨秷',
+      hideTitle: true,
+      onOk: async () => {
+        let data = await deleteKnow({
+          kb_id: id,
+        });
+        if (data.code == 0) {
+          Message.success('鍒犻櫎鎴愬姛');
+          knowledgeData();
+        }
+      },
+      onCancel: () => {},
     });
-    if (data.code == 0) {
-      Message.success('鍒犻櫎鎴愬姛');
-      knowledgeData();
-    }
   };
   const reset = () => {
     formModel.value = generateFormModel();
   };
+
+  function handleTabChange(key) {
+    // 澶勭悊鏍囩鏀瑰彉浜嬩欢
+    console.log('Changed to tab:', key);
+    activeKey.value = key;
+  }
 
   const handleSelectDensity = (
     val: string | number | Record<string, any> | undefined,
@@ -688,18 +1026,88 @@
     size.value = val as SizeProps;
   };
 
-  const handleChange = (
-    checked: boolean | (string | boolean | number)[],
-    column: Column,
-    index: number
-  ) => {
-    if (!checked) {
-      cloneColumns.value = showColumns.value.filter(
-        (item) => item.dataIndex !== column.dataIndex
-      );
+  const cancleConfig = () => {
+    activeKey.value = '1';
+    let id = tabs.value[selectedTab.value].id;
+    // 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: 10 });
+    tabs.value = data;
+    fetchData({
+      kb_id: id,
+      ...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();
+    });
+  };
+
+  //鎵归噺鍚敤鍒犻櫎绂佺敤
+  const addBlock = async (type) => {
+    if (type != 3) {
+      //鍚姩鍜屽彇娑�
+      let data = await kbdocumentrun({
+        doc_ids: checkedArr.value,
+        run: type,
+      });
+      if (data.code == 0) {
+        checkedArr.value.forEach(async (item) => {
+          tabs.value.forEach(async (items) => {
+            if (items.id == item) {
+              items.loading = true;
+            }
+          });
+        });
+        getKbList();
+      } else {
+        // Message.error('瑙f瀽澶辫触');
+        // row.run = '1';
+      }
     } else {
-      cloneColumns.value.splice(index, 0, column);
+      //鎵归噺鍒犻櫎
+      Modal.confirm({
+        title: '鎻愮ず淇℃伅',
+        content: '纭鍒犻櫎鍚�',
+        okText: '纭畾',
+        cancelText: '鍙栨秷',
+        hideTitle: true,
+        onOk: async () => {
+          let data = await kbdocumentrm({ doc_id: checkedArr.value });
+          if (data.code == 0) {
+            Message.success('鍒犻櫎鎴愬姛');
+            getKbList();
+          }
+        },
+        onCancel: () => {},
+      });
     }
+  };
+
+  const getKbList = async () => {
+    await fetchData({
+      kb_id: tabs.value[selectedTab.value].id,
+      ...basePagination,
+    });
   };
 
   const exchangeArray = <T extends Array<any>>(
@@ -742,6 +1150,7 @@
   const goBackClick = () => {
     detailsShow.value = false;
   };
+
   function upTabdateItem(id, newName) {
     console.log(id, newName);
     const itemToUpdate = renderData.value.find((item) => item.id === id);
@@ -755,22 +1164,21 @@
     let data = await kbdocumentrm({ doc_id: row.id });
     if (data.code == 0) {
       Message.success('鍒犻櫎鎴愬姛');
-      console.log(kbobj, 'kbobj');
+      // 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,
     });
   };
-  const seeload = async (row) => {
+  const previewArea = async (row) => {
     Object.assign(seeObj, row);
     // console.log(seeObj.name, 'seeObj');
     let type = row.name.split('.')[1];
@@ -786,9 +1194,11 @@
     } else {
       return false;
     }
+
     previewSrc.value = `${import.meta.env.VITE_API_BASE_URL}/v1/document/get/${
       row.id
     }`;
+    // previewSrc.value = `${ httpUrl }/v1/document/get/${row.id}`
     visible.value = true;
   };
 
@@ -804,33 +1214,40 @@
   };
 
   const run = async (row) => {
-    console.log(row);
     row.loading = true;
-    let run = '1';
-    if (row.run != '2') {
+    let run;
+    if (row.run == '0') {
+      run = '1';
+    } else if (row.run == '1') {
+      run = '2';
+    } else if (row.run == '2') {
       run = '1';
     } else {
-      run = '2';
+      run = '1';
     }
     let data = await kbdocumentrun({
       doc_ids: [row.id],
       run: run,
     });
     if (data.code == 0) {
-      Message.success('瑙f瀽鎴愬姛');
-      row.run = '3';
+      // 瀹氭椂鍣ㄦ煡璇㈠綋鍓嶅垪琛�
+      fetchData({
+        kb_id: tabs.value[selectedTab.value].id,
+        ...basePagination,
+      });
     } else {
-      Message.error('瑙f瀽澶辫触');
-      row.run = '1';
+      // Message.error('瑙f瀽澶辫触');
+      // row.run = '1';
     }
+
     row.loading = false;
   };
 
   const changeFetchData = async (row) => {
+    basePagination.page = 1;
     fetchData({
       kb_id: kbobj.id,
-      page: 1,
-      page_size: 20,
+      ...basePagination,
     });
   };
   watch(
@@ -846,44 +1263,49 @@
     { deep: true, immediate: true }
   );
 
-  onBeforeMount(() => {});
+  onBeforeMount(async () => {
+    // const  {data}  = await queryKbtenantInfo();
+    // Object.assign(kbtenantInfo,data);
+    // console.log(kbtenantInfo,'kbtenantInfo鐨勬暟鎹�');
+  });
   onMounted(() => {
     knowledgeData();
   });
-</script>
-
-<script lang="ts">
-  export default {
-    name: 'SearchTable',
-    methods: {},
-  };
+  onBeforeUnmount(() => {
+    clearInterval(timer);
+  });
 </script>
 
 <style scoped lang="less">
   .container {
     padding: 0 20px 20px 20px;
+
     .main-container {
       display: flex;
       width: 100%;
-      height: 100%;
+
       .lf-container {
         display: flex;
         flex-direction: column;
         align-items: center;
-        justify-content: space-evenly;
-        background: #ffffff;
+        //justify-content: space-evenly;
+        border-radius: 8px;
+        background: var(--color-bg-2);
         width: 200px;
+
         .lf-container-top {
           display: flex;
           margin: 10px 0;
         }
+
         .lf-container-down {
           display: flex;
           flex-direction: column;
           box-sizing: border-box;
           width: 90%;
-          //height: 56rem;
-          border: 1px solid #eeeeee;
+          height: calc(100% - 80px);
+          border: 1px solid var(--color-fill-3);
+          border-radius: 8px;
           //padding: 10px;
           margin-bottom: 10px;
           //.tabs{
@@ -896,39 +1318,50 @@
             box-sizing: border-box;
             margin: 10px 10px;
             padding: 0 10px;
-            color: rgba(0, 0, 0, 0.88);
+            padding-right: 20%;
             font-size: 14px;
             height: 40px;
             line-height: 40px;
             list-style: none;
             position: relative;
-            background: #ffffff;
-            border: 1px solid #f0f0f0;
+            color: var(--color-text-1);
+            border: 1px solid var(--color-neutral-3);
+            background: var(--color-bg-2);
             border-radius: 8px;
+            overflow: hidden; /* 纭繚瓒呭嚭瀹瑰櫒鐨勬枃鏈闅愯棌 */
+            white-space: nowrap; /* 闃叉鏂囨湰鎹㈣ */
+            text-overflow: ellipsis; /* 瓒呭嚭閮ㄥ垎鏄剧ず鐪佺暐鍙� */
           }
+
           .tab:hover {
-            border: 1px solid #ffffff;
+            color: #2a2a2b;
+            border: 1px solid var(--color-neutral-3);
             background: #e8e8ea;
             box-shadow: 0 1px 2px -2px rgba(0, 0, 0, 0.16),
               0 3px 6px 0 rgba(0, 0, 0, 0.12),
               0 5px 12px 4px rgba(0, 0, 0, 0.09);
           }
+
           .tab.active {
-            border: 1px solid #e8e8ea;
+            color: #2a2a2b;
+            border: 1px solid var(--color-neutral-1);
             background: #e8e8ea;
             cursor: pointer;
           }
         }
       }
+
       .rt-container {
         position: relative;
         //background: #626aea;
         margin-left: 20px;
         width: calc(100% - 200px);
-        height: 56rem;
+        overflow: hidden;
+
         .rt-container-main {
-          height: 76vh;
+          overflow: auto;
         }
+
         .details {
           position: absolute;
           top: 0;
@@ -936,6 +1369,7 @@
           width: 100%;
           height: 100%;
           background: #ffffff;
+
           .details-header {
             display: flex;
             justify-content: space-between;
@@ -946,6 +1380,7 @@
       }
     }
   }
+
   :deep(.arco-table-th) {
     &:last-child {
       .arco-table-th-item-title {
@@ -953,18 +1388,22 @@
       }
     }
   }
+
   .action-icon {
     margin-left: 12px;
     cursor: pointer;
   }
+
   .active {
     color: #0960bd;
     background-color: #e3f4fc;
   }
+
   .setting {
     display: flex;
     align-items: center;
     width: 200px;
+
     .title {
       margin-left: 12px;
       cursor: pointer;

--
Gitblit v1.8.0