From 8a04328fbba2139f399cb85ea9581adbe8d7e8c6 Mon Sep 17 00:00:00 2001
From: liudong <liudong>
Date: 星期六, 27 七月 2024 22:43:45 +0800
Subject: [PATCH] 知识库页面接口调用开发

---
 src/utils/index.ts                     |   45 +++++++++
 src/api/kbList.ts                      |   69 ++++++++++++-
 src/views/dmx/knowledgeLib/addKnow.vue |   16 ++
 src/api/interceptor.ts                 |    1 
 src/views/dmx/knowledgeLib/index.vue   |  116 ++++++++++++++++-------
 5 files changed, 205 insertions(+), 42 deletions(-)

diff --git a/src/api/interceptor.ts b/src/api/interceptor.ts
index 09e9392..28f64cb 100644
--- a/src/api/interceptor.ts
+++ b/src/api/interceptor.ts
@@ -37,6 +37,7 @@
       }
       config.headers.Authorization = `${authorization}`;
     }
+    config.headers.Authorization = 'Ijg3NmFjZjJlNGIzMzExZWY4NzI0MDI0MmFjMTIwMDA2Ig.ZqNvxw.Kgp8PcT4n2cxpzxFrYHttO4i2Eo';
     return config;
   },
   (error) => {
diff --git a/src/api/kbList.ts b/src/api/kbList.ts
index 7e5fbe1..2bb7fef 100644
--- a/src/api/kbList.ts
+++ b/src/api/kbList.ts
@@ -22,28 +22,87 @@
   list: PolicyRecord[];
   total: number;
 }
-
+// 鐭ヨ瘑搴撳垪琛ㄦ帴鍙�
 export function queryKbList(params) {
   return axios.get('/api/v1/kb/list', {
     params
   });
 }
-
+// 鐭ヨ瘑搴撹鎯呮帴鍙�
 export function queryKbdetail(params) {
   return axios.get('/api/v1/kb/detail', {
     params
   });
 }
 
-
+// 淇℃伅鎺ュ彛
 export function queryKbtenantInfo(params) {
   return axios.get('/api/v1/user/tenant_info', {
     params
   });
 }
-
+// 鏂囨。鍒楄〃鎺ュ彛
 export function queryKbDocumentList(params) {
   return axios.get('/api/v1/document/list', {
     params
   });
-}
\ No newline at end of file
+}
+
+// 鐭ヨ瘑搴撳垱寤烘帴鍙�
+export function kbcreate(params) {
+  return axios.post('/api/v1/kb/create', params);
+}
+// 鐭ヨ瘑搴撳垹闄ゆ帴鍙�
+export function deleteKnow(params) {
+  return axios.post('/api/v1/kb/rm', params);
+}
+//鐭ヨ瘑搴撴洿鏂版帴鍙�
+
+export function querykbupdate(params) {
+  return axios.post('/api/v1/kb/update', params);
+}
+
+// 鏂囨。涓婁紶鎺ュ彛
+
+export function kbdocumentupload(params) {
+  return axios.post('/api/v1/document/upload', params);
+}
+
+// 鏂囨。鍚姩/鍙栨秷瑙f瀽鎺ュ彛
+
+export function kbdocumentrun(params) {
+  return axios.post('/api/v1/document/run', params);
+}
+
+// 鏂囨。鍒犻櫎鎺ュ彛
+
+export function kbdocumentrm(params) {
+  return axios.post('/api/v1/document/rm', params);
+}
+
+
+// 鏂囦欢瑙f瀽鏂规硶鎺ュ彛
+export function kbdocumentrename(params) {
+  return axios.post('/api/v1/document/rename', params);
+}
+// 鏂囨。閲嶅懡鍚嶆帴鍙�
+export function kbdocumentchangeparser(params) {
+  return axios.post('/api/v1/document/change_parser', params);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/utils/index.ts b/src/utils/index.ts
index 197bab3..f4d32d8 100644
--- a/src/utils/index.ts
+++ b/src/utils/index.ts
@@ -22,4 +22,49 @@
   'i'
 );
 
+
+/**
+ * @description 鏍煎紡鍖栨椂闂�
+ * @param time
+ * @param cFormat
+ * @returns {string|null}
+ */
+export function parseTime(time, cFormat) {
+  if (arguments.length === 0) {
+    return null
+  }
+  const format = cFormat || '{y}-{m}-{d} {h}:{i}:{s}'
+  let date
+  if (typeof time === 'object') {
+    date = time
+  } else {
+    if (typeof time === 'string' && /^[0-9]+$/.test(time)) {
+      time = parseInt(time)
+    }
+    if (typeof time === 'number' && time.toString().length === 10) {
+      time = time * 1000
+    }
+    date = new Date(time)
+  }
+  const formatObj = {
+    y: date.getFullYear(),
+    m: date.getMonth() + 1,
+    d: date.getDate(),
+    h: date.getHours(),
+    i: date.getMinutes(),
+    s: date.getSeconds(),
+    a: date.getDay(),
+  }
+  return format.replace(/{([ymdhisa])+}/g, (result, key) => {
+    let value = formatObj[key]
+    if (key === 'a') {
+      return ['鏃�', '涓�', '浜�', '涓�', '鍥�', '浜�', '鍏�'][value]
+    }
+    if (result.length > 0 && value < 10) {
+      value = '0' + value
+    }
+    return value || 0
+  })
+}
+
 export default null;
diff --git a/src/views/dmx/knowledgeLib/addKnow.vue b/src/views/dmx/knowledgeLib/addKnow.vue
index 07db2d2..f94af22 100644
--- a/src/views/dmx/knowledgeLib/addKnow.vue
+++ b/src/views/dmx/knowledgeLib/addKnow.vue
@@ -22,6 +22,8 @@
 
 <script lang="ts" setup>
 import { onMounted ,onBeforeMount, reactive, ref } from "vue";
+import { kbcreate } from "@/api/kbList";
+import { Message } from '@arco-design/web-vue';
 
 const visible = ref(false);
 const loading = ref(false);
@@ -43,8 +45,18 @@
 }
 
 
-const handleSubmit = ({values, errors}) => {
-  console.log('values:', values, '\nerrors:', errors)
+const emit =  defineEmits(['knowledgeData'])
+
+const handleSubmit = async({values, errors}) => {
+  if(errors) return;
+    let data = await kbcreate({
+      name: values.name,
+    })
+    if(data.code == 0){
+      visible.value = false;
+      Message.success('鍒涘缓鎴愬姛');
+      emit("knowledgeData");
+    }
 }
 
 const handleClick = () => {
diff --git a/src/views/dmx/knowledgeLib/index.vue b/src/views/dmx/knowledgeLib/index.vue
index 1b5addd..07dba76 100644
--- a/src/views/dmx/knowledgeLib/index.vue
+++ b/src/views/dmx/knowledgeLib/index.vue
@@ -8,7 +8,7 @@
             :placeholder="$t('cardList.searchInput.placeholder')"
             style="width: 130px;"
           />
-          <addKnow></addKnow>
+          <addKnow @knowledgeData="knowledgeData"></addKnow>
         </div>
         <div class="lf-container-down">
           <div class="tabs">
@@ -20,6 +20,15 @@
               :class="{ 'active': selectedTab === index }"
             >
               {{ tab.name }}
+              <a-popover position="bl">
+                <icon-more  :style="{position: 'absolute',top:'10px',right:'20px'}"/>
+                <template #content>
+                  <a-popconfirm content="纭畾鍒犻櫎鍚�?" @ok="deleteKnowledge(tab.id)" type="warning">
+                    <span style="cursor: pointer;color: #0960bd;font-size: 12px"><icon-delete />鍒犻櫎</span>
+                  </a-popconfirm>
+
+                </template>
+              </a-popover>
             </div>
           </div>
         </div>
@@ -154,25 +163,28 @@
 <!--                    </span>-->
                     {{record.name}}
                   </template>
-                  <template #staue="{ record }">
-                    <a-switch :model-value="record.staue"/>
+                  <template #create_time="{ record }">
+                    <span>{{parseTime(record.create_time)}}</span>
                   </template>
                   <template #status="{ record }">
+                    <a-switch v-model="record.status"  checked-value="0" unchecked-value="1"/>
+                  </template>
+                  <template #run="{ record }">
                     <div style="display: flex;align-items: center;">
                       <div style="width: 100px">
-                        <a-popover title="Title">
+                        <a-popover title="Title" v-if="record.run == '2'">
                           <a-tag :color="'blue'" border>{{$t('dmx.list.complete')}}</a-tag>
                           <template #content>
                             <p>Here is the text content</p>
                           </template>
                         </a-popover>
-                        <a-popover title="Title">
+                        <a-popover title="Title" v-if="record.run == '1'">
                           <a-tag :color="'gold'" border>{{$t('dmx.list.cancel')}}</a-tag>
                           <template #content>
                             <p>Here is the text content</p>
                           </template>
                         </a-popover>
-                        <a-popover title="Title">
+                        <a-popover title="Title" v-if="record.run == '0'">
                           <a-tag :color="'green'" border>{{$t('dmx.list.NotStarted')}}</a-tag>
                           <template #content>
                             <p>Here is the text content</p>
@@ -180,17 +192,17 @@
                         </a-popover>
                       </div>
                       <div>
-                        <a-button type="text" size="large">
+                        <a-button type="text" size="large" v-if="record.run == '2'">
                           <template #icon>
                             <icon-sync />
                           </template>
                         </a-button>
-                        <a-button type="text" size="large">
+                        <a-button type="text" size="large" v-if="record.run == '1'">
                           <template #icon>
                             <icon-sync style="color: green" />
                           </template>
                         </a-button>
-                        <a-button type="text" size="large">
+                        <a-button type="text" size="large" v-if="record.run == '0'">
                           <template #icon>
                             <icon-play-circle style="color: green" />
                           </template>
@@ -198,11 +210,11 @@
                       </div>
                     </div>
                   </template>
-                  <template #operations="{ record }" >
+                  <template #action="{ record }" >
                     <tool/>
                     <edit/>
-                    <a-popconfirm :content="t('dmx.list.EnsureDelete')" type="warning" @ok="deleteItem(record)">
-                      <a-button v-permission="['admin']" type="text" size="small">
+                    <a-popconfirm :content="t('纭畾鍒犻櫎鍚�')" type="warning" @ok="deleteItem(record)">
+                      <a-button  type="text" size="small">
                         <template #icon>
                           <icon-delete />
                         </template>
@@ -274,7 +286,15 @@
 import { computed, ref, reactive, watch, nextTick, onBeforeMount } from "vue";
   import { useI18n } from 'vue-i18n';
   import useLoading from '@/hooks/loading';
-import { queryKbList, PolicyRecord, PolicyParams, queryKbDocumentList } from "@/api/kbList";
+import {
+  queryKbList,
+  PolicyRecord,
+  PolicyParams,
+  queryKbDocumentList,
+  deleteKnow,
+  queryKbdetail,
+  queryKbtenantInfo
+} from "@/api/kbList";
   import { Pagination } from '@/types/global';
   import type { SelectOptionData } from '@arco-design/web-vue/es/select/interface';
   import type { TableColumnData } from '@arco-design/web-vue/es/table/interface';
@@ -288,6 +308,8 @@
   import tool from '@/views/dmx/knowledgeLib/tool.vue'
   import addDetails from '@/views/dmx/knowledgeLib/addDetails.vue'
   import { deleteAccount } from "@/api/account";
+import { Message } from "@arco-design/web-vue";
+import { parseTime } from "@/utils";
   type SizeProps = 'mini' | 'small' | 'medium' | 'large';
   type Column = TableColumnData & { checked?: true };
   const account = ref(null)
@@ -305,7 +327,7 @@
   const { t } = useI18n();
   const renderData = ref([]);
   const formModel = ref(generateFormModel());
-  const cloneColumns = ref<Column[]>([]);
+  const cloneColumns = ref([]);
   const showColumns = ref<Column[]>([]);
 
   const size = ref<SizeProps>('medium');
@@ -357,36 +379,36 @@
     },
     {
       title: t('鍒嗗揩鏁�'),
-      dataIndex: 'contentType',
+      dataIndex: 'chunk_num',
     },
     {
       title: t('dmx.column.UploadTime'),
-      dataIndex: 'filterType',
+      dataIndex: 'create_time',
+      slotName: 'create_time',
+      width:200
     },
     {
-      title: t('dmx.column.Founder'),
-      dataIndex: 'count',
+      title: t('瑙f瀽鏂规硶'),
+      dataIndex: 'parser_id',
+      slotName: 'parser_id',
     },
     {
-      title: t('dmx.column.Status'),
-      dataIndex: 'createdTime',
-    },
-    {
-      title: t('dmx.column.Enable'),
-      dataIndex: 'staue',
-      slotName: 'staue',
-    },
-    {
-      title: t('dmx.column.ParseState'),
+      title: t('鍚敤'),
       dataIndex: 'status',
+      slotName: 'status',
       slotName: 'status',
     },
     {
+      title: t('瑙f瀽鐘舵��'),
+      dataIndex: 'run',
+      slotName: 'run',
+    },
+    {
       title: t('dmx.column.Operate'),
-      dataIndex: 'operations',
-      slotName: 'operations',
+      dataIndex: 'action',
+      slotName: 'action',
       width: 150,
-      minWidth: 100,
+      minWidth: 150,
     },
   ]);
   const contentTypeOptions = computed<SelectOptionData[]>(() => [
@@ -432,6 +454,16 @@
         renderData.value = data.data.docs||[];
         pagination.current = params.page;
         pagination.total = data.data.total;
+        //   鏌ヨ鐭ヨ瘑搴撹鎯�
+        const  kbdetail  = await queryKbdetail({
+          kb_id:params.kb_id,
+        });
+        //   璇︽儏
+        // const  kbtenantInfo  = await queryKbtenantInfo();
+
+
+
+
       }
     } catch (err) {
       // you can report use errorHandler or other
@@ -441,10 +473,11 @@
   };
 
   const search = () => {
-    fetchData({
-      ...basePagination,
-      ...formModel.value,
-    });
+    alert(1)
+    // fetchData({
+    //   ...basePagination,
+    //   ...formModel.value,
+    // });
   };
 
   const handleClick = ()=>{
@@ -482,6 +515,19 @@
     }
   };
 
+  const deleteKnowledge = async (id) => {
+
+
+
+
+    let data = await deleteKnow({
+      kb_id:id
+    })
+    if(data.code == 0){
+      Message.success('鍒犻櫎鎴愬姛');
+      knowledgeData()
+    }
+  }
   const reset = () => {
     formModel.value = generateFormModel();
   };

--
Gitblit v1.8.0