Browse Source

上传pdf

chd 5 tháng trước cách đây
mục cha
commit
84f0150304

+ 1 - 1
src/entrypoints/background.js

@@ -33,7 +33,7 @@ export default defineBackground(() => {
                         console.log("收到 content script 响应:", response);
                         sendResponse(response.data)
                     }
-
+                    return true
                 });
             });
             return true

+ 7 - 1
src/entrypoints/content.js

@@ -34,7 +34,13 @@ export default defineContentScript({
                         .filter(_ => _.innerText.includes(data.text))
                 }
                 console.log(dom);
-                dom[0].click()
+                // 添加红色边框,500ms后移除边框,然后点击
+                const originalBorder = dom[0].style.border;
+                dom[0].style.border = '2px solid red';
+                setTimeout(() => {
+                    dom[0].style.border = originalBorder;
+                    dom[0].click();
+                }, 1000);
                 sendResponse({ data: '完成' })
                 return true
             }

+ 49 - 44
src/entrypoints/sidepanel/Chat.vue

@@ -108,6 +108,7 @@ import { useMsg } from '@/entrypoints/sidepanel/hook/useMsg.ts';
 import Tools from "@/entrypoints/sidepanel/component/tools.vue";
 import { useSummary } from '@/entrypoints/sidepanel/hook/useSummary.ts'
 import { mockData } from "@/entrypoints/sidepanel/mock"
+import {upload} from '@/utils/ai-service'
 
 // 滚动条引用
 const scrollbar = ref(null);
@@ -129,14 +130,6 @@ const {
 } = useMsg(scrollbar, type, xlsxData, fetchDataAndProcess);
 const { handleCardButtonClick } = useSummary(addMessage, sendRequese);
 
-
-
-// const pageInfo = ref({})
-
-
-// 输入框内容
-// const inputMessage = ref('')
-
 // 计算标题是否需要滚动
 const titleScroll = computed(() => {
   return pageInfo.value?.title?.length > 20 // 当标题超过20个字符时触发滚动
@@ -147,48 +140,60 @@ let formInfo = []
 const flag = ref(false)  //true调用算法接口
 
 const handleUpload = (file) => {
+ console.log(upload);
+ 
   chrome.runtime.sendMessage({
     type: 'FROM_SIDE_PANEL_TO_GET_PAGE_FORM',
   }, async (response) => {
     if (chrome.runtime.lastError) {
-
       console.error("消息发送错误:", chrome.runtime.lastError);
     } else {
+      console.log(file);
       addMessage(`已上传文件:${file.name}`, false)
-
-      formInfo = response.data
-      const reader = new FileReader();
-      reader.readAsArrayBuffer(file);
-      reader.onload = async (e) => {
-        const data = new Uint8Array(e.target.result);
-        const workbook = XLSX.read(data, {
-          type: "array",
-          cellDates: false,
-          cellNF: true,
-          cellText: true,
-          dateNF: 'yyyy-mm-dd'
-        });
-
-        // 修复日期处理
-        const firstSheet = workbook.Sheets[workbook.SheetNames[0]];
-
-        // 转换为JSON数据
-        const readData = XLSX.utils.sheet_to_json(firstSheet, {
-          header: 1,
-          raw: false,
-          defval: "",
-          dateNF: 'yyyy-mm-dd'
-        });
-        console.log(readData, 58);
-
-        readData[0].forEach((header, i) => {
-          if (!xlsxData.value[header]) xlsxData.value[header] = []
-          xlsxData.value[header].push(readData[1][i])
-        })
-        if (type.value === '2') {
-          await streamRes(buildExcelUnderstandingPrompt(readData, file?.name, response), false)
-        }
-      };
+      const fileExtension = file.name.split('.').pop().toLowerCase();
+      console.log('文件后缀:', fileExtension);
+      if (fileExtension === 'xlsx') {
+        
+         formInfo = response.data
+        const reader = new FileReader();
+        reader.readAsArrayBuffer(file);
+        reader.onload = async (e) => {
+          const data = new Uint8Array(e.target.result);
+          const workbook = XLSX.read(data, {
+            type: "array",
+            cellDates: false,
+            cellNF: true,
+            cellText: true,
+            dateNF: 'yyyy-mm-dd'
+          });
+
+          // 修复日期处理
+          const firstSheet = workbook.Sheets[workbook.SheetNames[0]];
+
+          // 转换为JSON数据
+          const readData = XLSX.utils.sheet_to_json(firstSheet, {
+            header: 1,
+            raw: false,
+            defval: "",
+            dateNF: 'yyyy-mm-dd'
+          });
+          console.log(readData, 58);
+
+          readData[0].forEach((header, i) => {
+            if (!xlsxData.value[header]) xlsxData.value[header] = []
+            xlsxData.value[header].push(readData[1][i])
+          })
+          if (type.value === '2') {
+            await streamRes(buildExcelUnderstandingPrompt(readData, file?.name, response), false)
+          }
+        };
+      }
+    
+      } else {
+      let formData = new FormData();
+        formData.append("file", file);
+        const res = await upload(formData)
+        console.log(res);
     }
     return true
   });
@@ -216,7 +221,7 @@ async function fetchDataAndProcess(input, obj) {
 
 
 async function handleClick(res, msgObj) {
-  await new Promise(resolve => setTimeout(resolve, 1000))
+  await new Promise(resolve => setTimeout(resolve, 2000))
   if (res.action === 'click') {
     msgObj.content = `点击${res.tag}元素`
     chrome.runtime.sendMessage({

+ 1 - 1
src/entrypoints/sidepanel/component/tools.vue

@@ -18,7 +18,7 @@ const emit = defineEmits(['readClick','uploadFile'])
       <el-button :icon="Reading" circle @click="emit('readClick')" />
     </el-tooltip>
     <span class="separator"></span>
-    <el-upload style="display:inline-block" :before-upload="(file:any )=> emit('uploadFile',file)" :multiple="false" name="file" :show-file-list="false" :accept="'.xlsx'">
+    <el-upload style="display:inline-block" :before-upload="(file:any )=> emit('uploadFile',file)" :multiple="false" name="file" :show-file-list="false" :accept="'.xlsx,.pdf'">
       <el-tooltip effect="dark" content="文件上传" placement="top">
         <el-button :icon="Paperclip" circle />
       </el-tooltip>

+ 11 - 1
src/utils/ai-service.js

@@ -10,10 +10,20 @@ export const openai = new OpenAI(
         dangerouslyAllowBrowser: true,
     }
 )
+export async function upload(data) {
+    try {
+        const res = await fetch('http://180.76.147.97:18899/upload_file', {
+            method: 'post',
+            body: data,
+        }).then(res => res.json())
+        return res
+    } catch (error) {
 
+    }
+}
 export async function hepl(data) {
     try {
-        const res = await fetch('http://192.168.1.188:18899/test', {
+        const res = await fetch(' http://180.76.147.97:18899/test', {
             method: 'post',
             body: JSON.stringify(data)
         }).then(res => res.json())