From a78f6ae9b480f1f86f1a07d551585f5f0cac07fd Mon Sep 17 00:00:00 2001
From: charles <981744753@qq.com>
Date: 星期一, 29 七月 2024 16:48:56 +0800
Subject: [PATCH] feat:新增会话,会话记录模块

---
 src/views/dmx/knowledgeLib/index.vue |  295 ++++++++++++++++++++++++++++++++++++++++++----------------
 1 files changed, 212 insertions(+), 83 deletions(-)

diff --git a/src/views/dmx/knowledgeLib/index.vue b/src/views/dmx/knowledgeLib/index.vue
index 4465869..04e8c58 100644
--- a/src/views/dmx/knowledgeLib/index.vue
+++ b/src/views/dmx/knowledgeLib/index.vue
@@ -1,6 +1,6 @@
 <template>
   <div class="container">
-    <Breadcrumb :items="['澶фā鍨�', '鐭ヨ瘑搴撶鐞�']" />
+    <Breadcrumb :items="['dmx.list.index', 'dmx.list.kbm']" />
     <div class="main-container">
       <div class="lf-container">
         <div class="lf-container-top">
@@ -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">
@@ -16,17 +16,26 @@
               class="tab"
               v-for="(tab, index) in tabs"
               :key="index"
-              @click="selectTab(index)"
+              @click="selectTab(index,tab)"
               :class="{ 'active': selectedTab === index }"
             >
-              {{ tab }}
+              {{ 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>
       </div>
       <div class="rt-container">
         <a-tabs default-active-key="1">
-          <a-tab-pane key="1" title="鏁版嵁闆�">
+          <a-tab-pane key="1" :title= "t('dmx.list.DataSet')">
             <div class="rt-container-main">
               <a-card  ref="account" class="general-card" :title="$t('')" style="padding-top: 20px">
                 <a-row>
@@ -44,7 +53,7 @@
                             style="width: 200px;margin-right: 10px"
                           />
                           <!--            鏂板缓-->
-                          <add />
+                          <add :kbobj="kbobj" @changeFetchData="changeFetchData"/>
                         </a-col>
                       </a-row>
                     </a-form>
@@ -154,55 +163,57 @@
 <!--                    </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-tag :color="'blue'" border>鎴愬姛</a-tag>
+                        <a-popover title="Title" v-if="record.run == '3'">
+                          <a-tag  :loading="record.loading" :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-tag :color="'gold'" border>鍙栨秷</a-tag>
+                        <a-popover title="Title" v-if="record.run == '2'">
+                          <a-tag :loading="record.loading"  :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-tag :color="'green'" border>鏈惎鍔�</a-tag>
+                        <a-popover title="Title" v-if="record.run == '1'">
+                          <a-tag :loading="record.loading"  :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" v-if="record.run == '0'">
+                          <a-tag :loading="record.loading"  :color="'green'" border>{{$t('dmx.list.NotStarted')}}</a-tag>
                           <template #content>
                             <p>Here is the text content</p>
                           </template>
                         </a-popover>
                       </div>
-                      <div>
-                        <a-button type="text" size="large">
+                      <div >
+                        <a-button type="text" size="large" @click="run(record)" :loading="record.loading">
                           <template #icon>
-                            <icon-sync />
-                          </template>
-                        </a-button>
-                        <a-button type="text" size="large">
-                          <template #icon>
-                            <icon-sync style="color: green" />
-                          </template>
-                        </a-button>
-                        <a-button type="text" size="large">
-                          <template #icon>
-                            <icon-play-circle style="color: green" />
+                            <icon-sync  v-if="record.run == '3'"/>
+                            <icon-sync  v-if="record.run == '2'"/>
+                            <icon-sync style="color: green"  v-if="record.run == '1'"/>
+                            <icon-play-circle style="color: green"  v-if="record.run == '0'"/>
                           </template>
                         </a-button>
                       </div>
                     </div>
                   </template>
-                  <template #operations="{ record }" >
+                  <template #action="{ record }" >
                     <tool/>
-                    <edit/>
-                    <a-popconfirm content="纭畾鍒犻櫎鍚楋紵" type="warning" @ok="deleteItem(record)">
-                      <a-button v-permission="['admin']" type="text" size="small">
+                    <edit :item="record" @upTabdateItem="upTabdateItem"/>
+                    <a-popconfirm :content="t('纭畾鍒犻櫎鍚�')" type="warning" @ok="deleteItem(record)">
+                      <a-button  type="text" size="small">
                         <template #icon>
                           <icon-delete />
                         </template>
@@ -218,12 +229,12 @@
               </a-card>
             </div>
           </a-tab-pane>
-          <a-tab-pane key="2" title="娴嬭瘯">
+          <a-tab-pane key="2" :title="t('dmx.list.test')">
             <div class="rt-container-main">
               <test ></test>
             </div>
           </a-tab-pane>
-          <a-tab-pane key="3" title="閰嶇疆">
+          <a-tab-pane key="3" :title="t('dmx.list.disposition')">
             <div class="rt-container-main">
               <config ></config>
             </div>
@@ -238,11 +249,11 @@
             </div>
             <div style="display: flex; align-items: center;">
               <a-radio-group v-model="position" type="button" style="margin-right: 10px">
-                <a-radio value="top">鍏ㄦ枃</a-radio>
-                <a-radio value="right">鐪佺暐</a-radio>
+                <a-radio value="top">{{'dmx.list.EntireArticle'}}</a-radio>
+                <a-radio value="right">{{'dmx.list.omit'}}</a-radio>
               </a-radio-group>
               <a-popover position="bottom">
-                <a-button type="outline" class="button" style="margin-right: 10px">鎵归噺 <icon-down style="margin-left: 4px" /></a-button>
+                <a-button type="outline" class="button" style="margin-right: 10px">{{'dmx.list.batch'}} <icon-down style="margin-left: 4px" /></a-button>
                 <template #content>
                   <p>Here is the text content</p>
                   <p>Here is the text content</p>
@@ -271,10 +282,18 @@
 </template>
 
 <script lang="ts" setup>
-  import { computed, ref, reactive, watch, nextTick } from 'vue';
+import { computed, ref, reactive, watch, nextTick, onBeforeMount } from "vue";
   import { useI18n } from 'vue-i18n';
   import useLoading from '@/hooks/loading';
-  import { queryPolicyList, PolicyRecord, PolicyParams } from '@/api/list';
+import {
+  queryKbList,
+  PolicyRecord,
+  PolicyParams,
+  queryKbDocumentList,
+  deleteKnow,
+  queryKbdetail,
+  queryKbtenantInfo, kbdocumentrm, kbdocumentchangeparser, kbdocumentrun
+} 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 +307,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)
@@ -303,19 +324,27 @@
   };
   const { loading, setLoading } = useLoading(true);
   const { t } = useI18n();
-  const renderData = ref<PolicyRecord[]>([]);
+  const renderData = ref([]);
   const formModel = ref(generateFormModel());
-  const cloneColumns = ref<Column[]>([]);
+  const cloneColumns = ref([]);
   const showColumns = ref<Column[]>([]);
 
   const size = ref<SizeProps>('medium');
   let visible = ref(false)
   let detailsShow = ref(false)
   let selectedTab = ref(0)
-  let tabs = reactive(['娉曞緥鐭ヨ瘑搴�', '鏀垮姟鐭ヨ瘑搴�', '鍖诲鐭ヨ瘑搴�', '鍏朵粬鐭ヨ瘑搴�'])
+  let kbobj = reactive({})
+  let tabs = ref([])
 
-  const  selectTab = (index) => {
+  const  selectTab = (index,item) => {
     selectedTab.value= index;
+    console.log(item.id);
+    kbobj= item
+    fetchData({
+      kb_id: kbobj.id,
+      page: 1,
+      page_size: 20
+    })
   }
 
   const basePagination: Pagination = {
@@ -345,42 +374,42 @@
   ]);
   const columns = computed<TableColumnData[]>(() => [
     {
-      title: t('鍚嶇О'),
+      title: t('dmx.column.name'),
       dataIndex: 'name',
       slotName: 'name',
     },
     {
       title: t('鍒嗗揩鏁�'),
-      dataIndex: 'contentType',
+      dataIndex: 'chunk_num',
     },
     {
-      title: t('涓婁紶鏃堕棿'),
-      dataIndex: 'filterType',
+      title: t('dmx.column.UploadTime'),
+      dataIndex: 'create_time',
+      slotName: 'create_time',
+      width:200
     },
     {
-      title: t('鍒涘缓浜�'),
-      dataIndex: 'count',
-    },
-    {
-      title: t('瑙f瀽鐘舵��'),
-      dataIndex: 'createdTime',
+      title: t('瑙f瀽鏂规硶'),
+      dataIndex: 'parser_id',
+      slotName: 'parser_id',
     },
     {
       title: t('鍚敤'),
-      dataIndex: 'staue',
-      slotName: 'staue',
-    },
-    {
-      title: t('瑙f瀽鐘舵��'),
       dataIndex: 'status',
+      slotName: 'status',
       slotName: 'status',
     },
     {
-      title: t('鎿嶄綔'),
-      dataIndex: 'operations',
-      slotName: 'operations',
+      title: t('瑙f瀽鐘舵��'),
+      dataIndex: 'run',
+      slotName: 'run',
+    },
+    {
+      title: t('dmx.column.Operate'),
+      dataIndex: 'action',
+      slotName: 'action',
       width: 150,
-      minWidth: 100,
+      minWidth: 150,
     },
   ]);
   const contentTypeOptions = computed<SelectOptionData[]>(() => [
@@ -417,16 +446,34 @@
       value: 'offline',
     },
   ]);
-  const fetchData = async (
-    params: PolicyParams = { current: 1, pageSize: 20 }
-  ) => {
+  const fetchData = async (params) => {
     setLoading(true);
     try {
-      const { data } = await queryPolicyList(params);
-      renderData.value = data.list;
-      console.log(renderData, 'renderData');
-      pagination.current = params.current;
-      pagination.total = data.total;
+      const  data  = await queryKbDocumentList(params);
+      console.log(data, 'data');
+      if(data.code=='0'){
+        renderData.value = data.data.docs||[];
+        renderData.value = renderData.value.map((item) => {
+          return {
+            ...item,
+            loading: false,
+          };
+        });
+        console.log(renderData.value, 'renderData.value');
+
+        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
     } finally {
@@ -435,10 +482,11 @@
   };
 
   const search = () => {
-    fetchData({
-      ...basePagination,
-      ...formModel.value,
-    } as unknown as PolicyParams);
+    alert(1)
+    // fetchData({
+    //   ...basePagination,
+    //   ...formModel.value,
+    // });
   };
 
   const handleClick = ()=>{
@@ -449,7 +497,43 @@
     fetchData({ ...basePagination, current });
   };
 
-  fetchData();
+  const knowledgeData = async (
+    params = { page: 1, page_size: 20 }
+  ) => {
+    setLoading(true);
+    try {
+      const { data } = await queryKbList(params);
+      console.log(data, 'data');
+      tabs.value = data;
+      console.log(tabs.value, 'tabs');
+      if(tabs.value.length>0 && tabs.value[0]){
+        kbobj = tabs.value[0]
+        fetchData({
+          kb_id: kbobj.id,
+          page: 1,
+          page_size: 20
+        })
+      }
+      // renderData.value = data.list;
+      // console.log(renderData, 'renderData');
+      // pagination.current = params.current;
+      // pagination.total = data.total;
+    } catch (err) {
+      // you can report use errorHandler or other
+    } finally {
+      setLoading(false);
+    }
+  };
+
+  const deleteKnowledge = async (id) => {
+    let data = await deleteKnow({
+      kb_id:id
+    })
+    if(data.code == 0){
+      Message.success('鍒犻櫎鎴愬姛');
+      knowledgeData()
+    }
+  }
   const reset = () => {
     formModel.value = generateFormModel();
   };
@@ -517,17 +601,57 @@
     detailsShow.value = false
 
   }
-
-  const   deleteItem =  async (row)=>{
-    console.log(row);
-    // let data = await deleteAccount({id: row.number})
-    account.value.$messageSuccess('鍒犻櫎鎴愬姛')
-    //
-    // if(data.code == 200){
-    //   this.$messageSuccess('鍒犻櫎鎴愬姛')
-    // }
+  function upTabdateItem(id, newName) {
+    console.log(id, newName);
+    const itemToUpdate = renderData.value.find(item => item.id === id);
+    if (itemToUpdate) {
+      itemToUpdate.name = newName;
+    }
   }
 
+const   deleteItem =  async (row)=>{
+    console.log(row);
+    let data = await kbdocumentrm({doc_id: row.id})
+    if(data.code == 0){
+      Message.success('鍒犻櫎鎴愬姛');
+      console.log(kbobj, 'kbobj');
+      fetchData({
+        kb_id: kbobj.id,
+        page: 1,
+        page_size: 20
+      })
+    }
+  }
+
+const   run =  async (row)=>{
+  console.log(row);
+  row.loading = true;
+  let data = await kbdocumentrun({
+    doc_ids: [row.id],
+    run: '1'
+  })
+  // let data = await kbdocumentchangeparser({
+  //   parser_id: row.parser_id,
+  //   doc_id: row.id,
+  //   parser_config: row.parser_config,
+  // })
+  if(data.code == 0){
+    Message.success('瑙f瀽鎴愬姛');
+    row.run = '3';
+  }else{
+    Message.error('瑙f瀽澶辫触');
+    row.run = '1';
+  }
+  row.loading = false;
+}
+
+const   changeFetchData =  async (row)=>{
+  fetchData({
+    kb_id: kbobj.id,
+    page: 1,
+    page_size: 20
+  })
+}
   watch(
     () => columns.value,
     (val) => {
@@ -540,6 +664,11 @@
     },
     { deep: true, immediate: true }
   );
+
+  onBeforeMount(()=>{
+    knowledgeData()
+  })
+
 </script>
 
 <script lang="ts">

--
Gitblit v1.8.0