From c02bff2911f720d54388f4abb6456ec1777f8a96 Mon Sep 17 00:00:00 2001
From: zhangxiao <898441624@qq.com>
Date: 星期五, 30 八月 2024 10:40:02 +0800
Subject: [PATCH] fix: 修改bug

---
 src/views/dmx/knowledgeLib/config.vue |  232 +++++++++++++++++++++++++++-------------------------------
 1 files changed, 108 insertions(+), 124 deletions(-)

diff --git a/src/views/dmx/knowledgeLib/config.vue b/src/views/dmx/knowledgeLib/config.vue
index fe9a7ca..ebec067 100644
--- a/src/views/dmx/knowledgeLib/config.vue
+++ b/src/views/dmx/knowledgeLib/config.vue
@@ -1,5 +1,5 @@
 <template>
-  <div class="main-container">
+  <div ref="scrollContainer" class="main-container">
     <div style="position: absolute;top: 0;left: 0;width: 100%;padding: 0 20px">
       <h4 style="margin-bottom: 10px"></h4>
       <div style="color: #666666;">鍦ㄨ繖閲屾洿鏂版偍鐨勭煡璇嗗簱璇︾粏淇℃伅锛屽挨鍏舵槸瑙f瀽鏂规硶銆�</div>
@@ -14,49 +14,14 @@
           </a-form-item>
           <a-form-item field="section" label="鐭ヨ瘑搴撳浘鐗�">
             <a-space direction="vertical" :style="{ width: '100%' }">
-              <a-upload
-                :auto-upload="false"
-                :fileList="file ? [file] : []"
-                :show-file-list="false"
-                @change="onChange"
-                @progress="onProgress"
-              >
-                <template #upload-button>
-                  <div
-                    :class="`arco-upload-list-item${
-                      file && file.status === 'error' ? ' arco-upload-list-item-error' : ''
-                    }`"
-                  >
-                    <div
-                      class="arco-upload-list-picture custom-upload-avatar"
-                      v-if="file && file.url"
-                    >
-                      <img :src="form.avatar" />
-                      <div class="arco-upload-list-picture-mask">
-                        <IconEdit />
-                      </div>
-                      <a-progress
-                        v-if="file.status === 'uploading' && file.percent < 100"
-                        :percent="file.percent"
-                        type="circle"
-                        size="mini"
-                        :style="{
-                          position: 'absolute',
-                          left: '50%',
-                          top: '50%',
-                          transform: 'translateX(-50%) translateY(-50%)',
-                        }"
-                      />
-                    </div>
-                    <div class="arco-upload-picture-card" v-else>
-                      <div class="arco-upload-picture-card-text">
-                        <IconPlus />
-                        <div style="margin-top: 10px; font-weight: 600">涓婁紶</div>
-                      </div>
-                    </div>
-                  </div>
-                </template>
-              </a-upload>
+              <Upload
+                v-if="avatarShow"
+                :action="uploadAction"
+                :limit="1"
+                :url="form.avatar ? httpUrl + form.avatar : ''"
+                @update:fileList="updateFileList"
+                @success="handleSuccess"
+              ></Upload>
             </a-space>
           </a-form-item>
           <a-form-item field="section" label="鎻忚堪">
@@ -69,22 +34,27 @@
 <!--            </a-select>-->
 <!--          </a-form-item>-->
           <a-form-item field="embd_id" label="宓屽叆妯″瀷">
-            <a-space direction="vertical" size="large">
-              <a-select :size="'large'" v-model="form.embd_id" :style="{width:'100%'}" placeholder="璇烽�夋嫨 ..." :disabled="kbObj.chunk_num==0 && kbObj.token_num==0" allow-clear>
-                <a-optgroup  :label="index" v-for="(item,index) in modelList" :key=index>
-                  <a-option
-                    v-for="(obj) in item"
-                    :key='obj.fid'
-                    :value="obj.llm_name"
-                  >
-                    {{obj.llm_name}}
-                  </a-option>
-                </a-optgroup>
-              </a-select>
-            </a-space>
+            <a-select :size="'large'" v-model="form.embd_id" placeholder="璇烽�夋嫨 ..." :disabled="kbObj.chunk_num && kbObj.token_num">
+              <!-- <a-optgroup  :label="index" v-for="(item,index) in mobileData" :key=index>
+                <a-option
+                  v-for="(obj) in item"
+                  :key='obj.fid'
+                  :value="obj.llm_name"
+                >
+                  {{obj.llm_name}}
+                </a-option>
+              </a-optgroup> -->
+              <a-option
+                  v-for="(item,index) in mobileData"
+                  :key='item.name'
+                  :value="item.name"
+                >
+                  {{item.name}}
+                </a-option>
+            </a-select>
           </a-form-item>
           <a-form-item field="parser_id" label="瑙f瀽鏂规硶">
-            <a-select v-model="form.parser_id" placeholder="璇烽�夋嫨" :disabled="kbObj.chunk_num==0 && kbObj.token_num==0" allow-clear>
+            <a-select v-model="form.parser_id" placeholder="璇烽�夋嫨" :disabled="!!(kbObj.chunk_num  && kbObj.token_num)" >
               <a-option v-for="item in parser_ids" :key="item.value" :label="item.name" :value="item.value"></a-option>
             </a-select>
           </a-form-item>
@@ -97,9 +67,7 @@
             </a-space>
           </a-form-item>
           <a-form-item field="raptor" label="浣跨敤鍙洖澧炲己RAPTOR绛栫暐">
-            <a-space direction="vertical" >
-              <a-switch v-model="form.use_raptor" size="small" />
-            </a-space>
+            <a-switch v-model="form.use_raptor" size="small" />
           </a-form-item>
           <div v-if="form.use_raptor">
             <a-form-item field="prompt" label="鎻愮ず璇�">
@@ -131,7 +99,7 @@
             <div style="width: 100%;text-align: right">
               <a-space>
                 <a-button @click="cancelConfig">鍙栨秷</a-button>
-                <a-button type="primary" html-type="submit">淇濆瓨</a-button>
+                <a-button :loading="loading" type="primary" html-type="submit">淇濆瓨</a-button>
               </a-space>
             </div>
           </a-form-item>
@@ -189,13 +157,13 @@
 </template>
 
 <script lang="ts" setup>
-import { onMounted, onBeforeMount, reactive, ref } from "vue";
+import { onMounted, onBeforeMount, reactive, ref, nextTick } from "vue";
 import { Message } from "@arco-design/web-vue";
-import { queryModelList,kbUpdate } from "@/api/kbList";
+import { queryModelList,kbUpdate,getKnowledgeBaseModel } from "@/api/kbList";
 import message from "@arco-design/web-vue/es/message";
 import useLoading from "@/hooks/loading";
 const { loading,setLoading } = useLoading(true);
-
+const scrollContainer = ref();
 const props =  defineProps(['kbtenantInfo'])
 const emit =  defineEmits(['cancleConfig','saveConfig'])
 // 瑙f瀽鏂规硶鍒楄〃
@@ -208,10 +176,11 @@
 });
 
 let kbObj = reactive({});
+let avatarShow = ref(true);
 
 const form = reactive({
-  name: kbObj.name,
-  avatar: '',//
+  name: '',
+  avatar: '',//澶村儚
   max_token: 600,
   threshold: 0.32,
   max_cluster: 233,
@@ -225,8 +194,8 @@
   description: "",
   language: "English",
   permission: "",
-  embd_id: "BAAI/bge-large-zh-v1.5",
-  parser_id: kbObj.parser_id,
+  embd_id: "",
+  parser_id: '',
   layout_recognize: true
 });
 
@@ -257,30 +226,24 @@
   ],
 }
 let visible = ref(false);
-const formRef = ref(null);
+const formRef = ref();
 const modelList = ref({});
+const mobileData= ref<any>([])
 const file = ref();
 
-const onChange = (_, currentFile) => {
-  file.value = currentFile;
-  convertImageToBase64(file.value.file).then((result)=>{
-    form.avatar = result;
-  })
+const uploadAction = '/api/v1/llm/upload'; // 鏇挎崲涓轰綘鐨勪笂浼燗PI
+const fileList = ref([]);
+const imageUrls = ref([]);
+const httpUrl = localStorage.getItem('httpUrl');
+
+const updateFileList = (newFileList) => {
+  fileList.value = newFileList;
+  console.log(newFileList, 88);
 };
 
-function convertImageToBase64(file) {
-  return new Promise((resolve, reject) => {
-    const reader = new FileReader();
-    reader.onloadend = function() {
-      resolve(reader.result);
-    };
-    reader.onerror = reject;
-    reader.readAsDataURL(file);
-  });
-}
-
-const onProgress = (currentFile) => {
-  file.value = currentFile;
+const handleSuccess = (urls) => {
+  imageUrls.value = urls; // 鎷垮埌涓婁紶鐨勫浘鐗囧湴鍧�
+  form.avatar = urls[0];
 };
 
 
@@ -313,7 +276,7 @@
      };
    }
    try {
-    
+     setLoading(true)
     const data = await kbUpdate(parms);
     if(data.code == '0'){
       Message.success("閰嶇疆鎴愬姛");
@@ -321,10 +284,11 @@
       emit('saveConfig')
 
     }
-    // emit('upTabdateItem')
+    setLoading(false)
 
   } catch (err) {
     Message.error(err.message);
+     setLoading(false)
   }
 
 
@@ -358,14 +322,25 @@
   Object.assign(form,{
 
   });
-  formRef.value.resetFields();
+  // formRef.value.resetFields();
 }
 
 const queryModel = async (params) => {
   try {
-    const data = await queryModelList(params);
+    const data = await getKnowledgeBaseModel(params);
+    // const res =await queryModelList(params)
     // console.log(data.data, '澶фā鍨嬪垪琛�');
     modelList.value = data.data
+    for(let key in data.data) {
+      if (data.data.hasOwnProperty(key)) { // 纭繚鏄璞¤嚜鏈夊睘鎬э紝涓嶆槸鍘熷瀷閾句笂鐨勫睘鎬�
+        if(data.data[key].llm.length > 0){
+          mobileData.value= data.data[key].llm.filter(item => item.type == "embedding")
+        }
+      }  
+  
+    }
+
+   
   } catch (err) {
     // you can report use errorHandler or other
   } finally {
@@ -374,37 +349,45 @@
 };
 
 const changekbObj = (value) => {
-  formRef.value.resetFields();
-  kbObj = value;
-  console.log(kbObj, 'kbObj');
-  if(kbObj.avatar){
-    file.value.url = kbObj.avatar
-  }else{
-    // file.value.url = '';
-  }
-  let configObj = {
-    name: kbObj.name,
-    avatar: kbObj.avatar,
-    pages:  kbObj.parser_config.pages,
-    description: kbObj.description,
-    language: "English",
-    permission: kbObj.permission,
-    embd_id: props.kbtenantInfo.embd_id || kbObj.embd_id,
-    parser_id: kbObj.parser_id,
-    layout_recognize: true,
-  }
-  let raptor = {}
-  if(kbObj.parser_config && kbObj.parser_config.raptor){
-    raptor = kbObj.parser_config.raptor;
-    Object.assign(form,{
-      ...configObj,
-      ...raptor,
-      use_raptor: kbObj.parser_config.raptor.use_raptor,
-    });
-  }else{
-    Object.assign(form,configObj);
-  }
-  console.log(form,'閰嶇疆椤甸潰琛ㄥ崟淇℃伅');
+  
+   formRef.value.resetFields();
+  nextTick(()=>{
+    kbObj = value;
+    console.log(kbObj, 'kbObj');
+    let configObj = {
+      name: kbObj.name,
+      avatar: kbObj.avatar,
+      pages:  kbObj.parser_config.pages,
+      chunk_token_num:  kbObj.parser_config.chunk_token_num,
+      description: kbObj.description,
+      language: "English",
+      permission: kbObj.permission,
+      embd_id: kbObj.embd_id || props.kbtenantInfo.embd_id,
+      parser_id: kbObj.parser_id,
+      layout_recognize: true,
+    }
+    let raptor = {}
+    if(kbObj.parser_config && kbObj.parser_config.raptor){
+      raptor = kbObj.parser_config.raptor;
+      Object.assign(form,{
+        ...configObj,
+        ...raptor,
+        use_raptor: kbObj.parser_config.raptor.use_raptor,
+      });
+    }else{
+      Object.assign(form,{
+        ...configObj,
+        use_raptor: false,
+      });
+    }
+    imageUrls.value = [kbObj.avatar];
+    console.log(form,'閰嶇疆椤甸潰琛ㄥ崟淇℃伅');
+    avatarShow.value = false;
+    setTimeout(() => {
+      avatarShow.value = true;
+    },100);
+    scrollContainer.value.scrollTop = 0;
+  })
 }
 
 defineExpose({
@@ -413,6 +396,7 @@
 
 
 onBeforeMount(()=>{
+  setLoading(false)
   queryModel({})
 })
 onMounted(()=>{
@@ -438,7 +422,7 @@
   justify-content: space-between;
   height: 100%;
   overflow: auto;
-  //background: #626aea;
+  border-radius: 8px;
   background: var(--color-bg-2);
   padding-top: 80px;
 

--
Gitblit v1.8.0