Răsfoiți Sursa

perf: 优化代码,提高代码可维护性

1. 优化首页 展开和收起按钮组件
2. 优化Home.vue中的一部分代码
3.
将pdfjs-dist代码提到public目录中,避免引用远程worker路径,规避后续部署问题
zhupei 1 an în urmă
părinte
comite
8e8c4f5ac0

Fișier diff suprimat deoarece este prea mare
+ 20 - 0
public/pdfjs-dist/pdf.min.mjs


Fișier diff suprimat deoarece este prea mare
+ 20523 - 0
public/pdfjs-dist/pdf.mjs


Fișier diff suprimat deoarece este prea mare
+ 0 - 0
public/pdfjs-dist/pdf.mjs.map


Fișier diff suprimat deoarece este prea mare
+ 20 - 0
public/pdfjs-dist/pdf.sandbox.min.mjs


Fișier diff suprimat deoarece este prea mare
+ 52 - 0
public/pdfjs-dist/pdf.sandbox.mjs


Fișier diff suprimat deoarece este prea mare
+ 0 - 0
public/pdfjs-dist/pdf.sandbox.mjs.map


Fișier diff suprimat deoarece este prea mare
+ 20 - 0
public/pdfjs-dist/pdf.worker.min.mjs


Fișier diff suprimat deoarece este prea mare
+ 3494 - 0
public/pdfjs-dist/pdf.worker.mjs


+ 43 - 0
src/components/ToggleBtn.vue

@@ -0,0 +1,43 @@
+<template>
+<a-tooltip :content="text_display">
+    <span @click="openAll" class="toggle-btn">
+        <img src="@/assets/other/open.svg" width="20" v-if="closeOthers" />
+        <img src="@/assets/other/close.svg" width="20" v-else />
+    </span>
+</a-tooltip>
+</template>
+
+<script setup>
+import { ref, computed } from "vue";
+
+const props = defineProps({
+    closeOthers: Boolean,
+});
+
+const emit = defineEmits('toggle');
+
+const text_display = computed(() => {
+    return props.closeOthers ? '收起' : '展开';
+});
+
+const openAll = () => {
+    emit('toggle');
+};
+</script>
+
+<style scoped>
+.toggle-btn{
+    position: absolute;
+    bottom: -10px;
+    left: -10px;
+    z-index: 10;
+    width: 38px;
+    height: 38px;
+    border-radius: 20px;
+    background: #fff;
+    display: flex;
+    align-items: center;
+    justify-content: center;
+    cursor: pointer;
+}
+</style>

Fișier diff suprimat deoarece este prea mare
+ 20 - 0
src/components/pdf-viewer/pdf.min.mjs


+ 3 - 4
src/components/pdf-viewer/pdfjs.js

@@ -1,7 +1,6 @@
-import * as PDFJS from 'pdfjs-dist'
+import * as PDFJS from './pdf.min.mjs'
 
-PDFJS.GlobalWorkerOptions.workerSrc = `//unpkg.com/pdfjs-dist@${PDFJS.version}/build/pdf.worker.mjs`
-
-// https://unpkg.com/pdfjs-dist@4.8.69/build/pdf.mjs
+// PDFJS.GlobalWorkerOptions.workerSrc = `//unpkg.com/pdfjs-dist@${PDFJS.version}/build/pdf.worker.mjs`
+PDFJS.GlobalWorkerOptions.workerSrc = `/pdfjs-dist/pdf.worker.mjs`
 
 export default PDFJS;

+ 49 - 20
src/views/Home.vue

@@ -148,12 +148,14 @@
               <MessagePicUpload />
             </footer>
 
-            <a-tooltip :content="closeOthers ? '收起' : '展开'">
+            <!-- <a-tooltip :content="closeOthers ? '收起' : '展开'">
               <div @click="openAll" v-if="navId !== -2">
                 <img src="@/assets/other/open.svg" width="20" v-if="closeOthers" />
                 <img src="@/assets/other/close.svg" width="20" v-else />
               </div>
-            </a-tooltip>
+            </a-tooltip> -->
+
+            <ToggleBtn v-if="navId !== -2" :closeOthers="closeOthers" @toggle="openAll"/>
           </div>
         </div>
       </div>
@@ -180,6 +182,9 @@ import DocumentInterlocution from './DocumentInterlocution.vue';
 import DocumentQuestion from "./DocumentQuestion.vue";
 import DocumentQuestion2 from "./DocumentQuestion2.vue";
 import Analysis from "./Analysis.vue";
+
+import ToggleBtn from '../components/ToggleBtn.vue';
+
 import { defineComponent, ref, onMounted, inject, onBeforeUnmount } from "vue";
 
 export default defineComponent({
@@ -201,7 +206,9 @@ export default defineComponent({
     DocumentQuestion2,
     Analysis,
     DocumentDetail,
-    DocumentCombine
+    DocumentCombine,
+
+    ToggleBtn
   },
   setup() {
     // NOTE: 先把4文库问答的类型改成report类型,后续再改回来
@@ -214,7 +221,7 @@ export default defineComponent({
     const swiperNumber = ref(5);
     const navId = ref(-1);
     const readonly = ref(false);
-    const showDialog = ref(false);
+    const showDialog = ref(false); // 是否显示对话内容
     const historyMode = ref(false);
     const dialogList = ref([]);
     const selectId = ref("");
@@ -303,29 +310,40 @@ export default defineComponent({
 
       initDialog.value = true;
       helper.$bus.emit("set-loading", false);
-
     };
+
     const beginCombine = async () => {
       let report_name = "";
       let inputData = [];
       for (let key in reportData) {
-        if (typeof reportData[key].value === "string") {
-          report_name += `${reportData[key].key}:${reportData[key].value}\n`;
-          inputData.push({
-            id: key,
-            name: reportData[key].key,
-            file_path: "",
-            value: reportData[key].value
-          });
+        /**
+         * 此部分代码于 2024/11/25日上午做了简单优化
+         * 优化时,仅调整了循环体内的代码
+         * 由于此功能暂时禁用,无法测试优化后的效果是否正常
+         * 如果后续测试时发现代码异常,可copy此时间之前的原代码
+         */
+        const cur_report = reportData[key];
+        const report_key = cur_report.key;
+        const report_value = cur_report.value;
+
+        const item = {
+          id: key,
+          name: report_key,
+        };
+
+        if (typeof report_value === "string") {
+          report_name += `${report_key}:${report_value}\n`;
+
+          item.file_path = '';
+          item.value = report_value;
         } else {
-          report_name += `${reportData[key].key}:${reportData[key].value.name}\n`;
-          inputData.push({
-            id: key,
-            name: reportData[key].key,
-            file_path: reportData[key].value.url,
-            value: ""
-          });
+          report_name += `${report_key}:${report_value.name}\n`;
+
+          item.file_path = report_value.url;
+          item.value = '';
         }
+
+        inputData.push(item);
       }
 
       // 如果不是历史记录对话模式,则创建对话
@@ -336,9 +354,11 @@ export default defineComponent({
           dialogId.value = data.chat_id;
         }
       }
+      
       dialogList.value = [];
       showDialog.value = true;
       initDialog.value = true;
+
       const sendData = {
         chatHistory: [],
         message: textValue.value,
@@ -350,10 +370,12 @@ export default defineComponent({
           data: inputData
         }
       };
+
       setTimeout(() => {
         helper.$bus.emit("send-message", sendData);
       }, 500);
     };
+
     const continueCombine = async () => {
       const sendData = {
         chatHistory: [],
@@ -378,20 +400,26 @@ export default defineComponent({
         value: event
       };
     };
+
     const customRequest = async (option, key, value) => {
       const { onSuccess, fileItem } = option;
       const { file, uid, name } = fileItem;
       const fileList = [];
+
       fileList.push({
         id: uid,
         file
       });
+
       onSuccess();
       const formData = new FormData();
+
       fileList.forEach((item) => {
         formData.append("file", item.file);
       });
+
       const data = await ajax.file.uploadFiles(selectId.value, formData);
+
       reportData[key] = {
         key: value,
         value: {
@@ -400,6 +428,7 @@ export default defineComponent({
         }
       };
     };
+
     onMounted(async () => {
       agents = await ajax.agent.getAgents();
       agentIds.value = agents && Array.isArray(agents) && agents.map((data) => data.id) || [];

Unele fișiere nu au fost afișate deoarece prea multe fișiere au fost modificate în acest diff