Просмотр исходного кода

fix:优化首页网页搜索按钮动画闪烁,优化知识库上传文档和解析文档问题

hanyang 1 год назад
Родитель
Сommit
f041e758f3

+ 5 - 2
src/modules/conversation-content/DialogContent.vue

@@ -7,8 +7,9 @@
       </a-button>
     </div>
     <DialogWebPage
-      v-if="is_internet_search"
+      v-if="is_internet_search && internet_search.length"
       :internet_search="internet_search"
+      :answer_status="answer_status"
       @toSearchPage="toSearchPage"
     ></DialogWebPage>
     <!-- <a-button class="think-select" v-if="deep_loading">
@@ -68,7 +69,9 @@ const props = defineProps({
   internet_search: Array,
   deep_answer: String,
   deep_loading: Boolean,
-  mind_map: String
+  mind_map: String,
+  // 对话状态: 0 1 2
+  answer_status: String
 });
 
 const emit = defineEmits(['toSearchPage', 'toShowMindMap']);

+ 20 - 8
src/modules/conversation-content/DialogWebPage.vue

@@ -1,13 +1,13 @@
 <template>
   <a-button
-    class="btn"
+    :class="answer_status / 1 === 2 ? 'btn' : 'btn-1'"
     v-if="show_internet_search"
-    @mouseenter="isHovered = true"
-    @mouseleave="isHovered = false"
+    @mouseenter="mouseChange(1)"
+    @mouseleave="mouseChange(0)"
     @click="toSearchPage"
   >
     <icon-check-circle class="icon" />
-    <span class="btn-text"> {{ buttonText }}</span>
+    <span class="btn-text" :style="btn_text_style"> {{ buttonText }}</span>
   </a-button>
   <a-button class="btn-right" v-if="show_internet_search" @click="handleShowChange">
     <icon-down />
@@ -35,7 +35,8 @@
 <script setup>
 import { ref, computed, watch } from 'vue';
 const props = defineProps({
-  internet_search: Array
+  internet_search: Array,
+  answer_status: String
 });
 const emit = defineEmits(['toSearchPage']);
 const internet_search_len = computed(() => {
@@ -45,6 +46,16 @@ const isHovered = ref(false);
 const buttonText = computed(() => {
   return isHovered.value ? '打开网页详情' : `已阅读${internet_search_len.value}个网页`;
 });
+
+const mouseChange = (status) => {
+  console.log(props.answer_status, typeof props.answer_status);
+  if (props.answer_status / 1 !== 2) {
+    return;
+  } else {
+    isHovered.value = status ? true : false;
+  }
+};
+
 const toSearchPage = () => {
   emit('toSearchPage');
 };
@@ -58,10 +69,10 @@ const openUrl = (url) => {
 };
 </script>
 <style scoped>
-.btn {
+/* .btn {
   border-top-left-radius: 12px;
   border-bottom-left-radius: 12px;
-}
+} */
 .icon {
   color: #20b759;
   font-size: 16px;
@@ -69,7 +80,8 @@ const openUrl = (url) => {
 }
 
 /* 基础按钮样式 */
-.btn {
+.btn,
+.btn-1 {
   position: relative;
   overflow: hidden;
   padding: 10px 15px;

+ 1 - 0
src/modules/conversation-item/DialogAnswer.vue

@@ -24,6 +24,7 @@
             :deep_answer="deep_answer"
             :deep_loading="deep_loading"
             :mind_map="mind_map"
+            :answer_status="answer_status"
             @toSearchPage="toSearchPage"
             @toShowMindMap="toShowMindMap"
           >

+ 1 - 1
src/modules/intelligent/rgflow/AgentConfig.vue

@@ -506,7 +506,7 @@ const handleBeforeOk = async (done) => {
   formRef2.value.validate().then((res) => {
     console.log('res:', res);
   });
-  console.log(form);
+  // console.log(form, form.name, form.kb_ids, form.prompt_config.system, form.llm_id);
   if (form.name && form.kb_ids.length > 0 && form.prompt_config.system && form.llm_id) {
     console.log(formNew, 'formNew');
     let title = t('management.create_success');

+ 15 - 9
src/modules/knowledge/rgflow/knowledgeLib/add.vue

@@ -78,20 +78,26 @@ const submitForm = async (done) => {
     done(false);
     return;
   }
+
   if (files.value && files.value.length > 0) {
+    loading.value = true;
     files.value.map((item) => {
       const formData = new FormData();
       formData.append('file', item.file);
       formData.append('kb_id', props.kbobj.id);
-      kbdocumentupload(formData).then((res) => {
-        if (res.code == 0) {
-          emit('changeFetchData');
-          Message.success('上传成功');
-          handleCancel();
-          // 同步数据
-          toSyncOwnKnowledge(props.kbobj.id);
-        }
-      });
+      kbdocumentupload(formData)
+        .then((res) => {
+          if (res.code == 0) {
+            emit('changeFetchData');
+            Message.success('上传成功');
+            handleCancel();
+            // 同步数据
+            toSyncOwnKnowledge(props.kbobj.id);
+          }
+        })
+        .finally(() => {
+          loading.value = false;
+        });
     });
     done(false);
   } else {

+ 12 - 4
src/modules/knowledge/rgflow/knowledgeLib/index.vue

@@ -525,6 +525,7 @@ const fetchData = async (params) => {
     setLoading(false);
   }
 };
+let interval = null;
 const documentList = async () => {
   try {
     let params = { ...basePagination, kb_id: kbobj.id };
@@ -546,10 +547,17 @@ const documentList = async () => {
       });
       // 当renderData中有文档正在解析,则开启定时器
       const hasRunningDocs = renderData.value.length && renderData.value.some((item) => item.run == '1');
+
       if (hasRunningDocs) {
-        setTimeout(() => {
-          documentList();
-        }, 3000);
+        if (!interval) {
+          interval = setInterval(documentList, 3000);
+        }
+      } else {
+        // 如果没有正在解析的文档,清除定时器
+        if (interval) {
+          clearInterval(interval);
+          interval = null;
+        }
       }
     }
   } catch (err) {
@@ -687,7 +695,7 @@ const deleteModalOk = async () => {
       // 同步数据
       toSyncOwnKnowledge(props.kb_id);
     } else {
-      Message.error(data.retmsg);
+      Message.error(data.message);
     }
   } catch (err) {
     console.log(err);