From 4a12fc7ed3d46e494cc7e4ced4c41da888fe5195 Mon Sep 17 00:00:00 2001 From: johnathan <952508490@qq.com> Date: Tue, 24 Jun 2025 16:21:18 +0800 Subject: [PATCH] Update --- ...iption.vue => AmazonDetailDescription.vue} | 5 +- src/components/IdsInput.vue | 60 +++++++--- src/components/ProgressReport.vue | 2 +- src/components/ReviewCard.vue | 2 - src/components/ReviewPreview.vue | 3 +- src/global.d.ts | 64 ++++++++++ src/logic/{data-io.ts => excel.ts} | 24 ++-- src/logic/page-worker/amazon.ts | 26 ++-- src/logic/page-worker/homedepot.ts | 10 +- .../page-worker/{types.d.ts => types.ts} | 111 ++++-------------- src/logic/storages/amazon.ts | 11 +- src/logic/storages/homedepot.ts | 2 - src/logic/upload.ts | 31 +++++ src/logic/web-injectors/amazon.ts | 12 +- src/logic/web-injectors/base.ts | 31 ++++- src/logic/web-injectors/homedepot.ts | 3 +- src/logic/web-injectors/lowes.ts | 2 +- src/options/views/AmazonResultTable.vue | 14 ++- src/options/views/HomedepotResultTable.vue | 2 +- src/sidepanel/App.vue | 1 - .../views/AmazonEntries/DetailPageEntry.vue | 41 ++++++- .../views/AmazonEntries/ReviewPageEntry.vue | 9 +- .../views/AmazonEntries/SearchPageEntry.vue | 24 ++-- src/sidepanel/views/HomedepotSidepanel.vue | 9 +- 24 files changed, 314 insertions(+), 185 deletions(-) rename src/components/{DetailDescription.vue => AmazonDetailDescription.vue} (90%) rename src/logic/{data-io.ts => excel.ts} (93%) rename src/logic/page-worker/{types.d.ts => types.ts} (56%) create mode 100644 src/logic/upload.ts diff --git a/src/components/DetailDescription.vue b/src/components/AmazonDetailDescription.vue similarity index 90% rename from src/components/DetailDescription.vue rename to src/components/AmazonDetailDescription.vue index b8a5df6..34f77c8 100644 --- a/src/components/DetailDescription.vue +++ b/src/components/AmazonDetailDescription.vue @@ -1,6 +1,4 @@ @@ -31,6 +29,9 @@ defineProps<{ model: AmazonDetailItem }>(); + + + diff --git a/src/components/IdsInput.vue b/src/components/IdsInput.vue index 6d13ed5..754d758 100644 --- a/src/components/IdsInput.vue +++ b/src/components/IdsInput.vue @@ -82,20 +82,38 @@ defineExpose({ - diff --git a/src/components/ProgressReport.vue b/src/components/ProgressReport.vue index 05f4e02..0b0a242 100644 --- a/src/components/ProgressReport.vue +++ b/src/components/ProgressReport.vue @@ -35,7 +35,7 @@ defineProps<{ - diff --git a/src/sidepanel/views/AmazonEntries/ReviewPageEntry.vue b/src/sidepanel/views/AmazonEntries/ReviewPageEntry.vue index 09698a7..0b84d7e 100644 --- a/src/sidepanel/views/AmazonEntries/ReviewPageEntry.vue +++ b/src/sidepanel/views/AmazonEntries/ReviewPageEntry.vue @@ -2,7 +2,6 @@ import type { Timeline } from '~/components/ProgressReport.vue'; import { useLongTask } from '~/composables/useLongTask'; import { amazon as pageWorker } from '~/logic/page-worker'; -import type { AmazonReview } from '~/logic/page-worker/types'; import { reviewAsinInput, reviewItems } from '~/logic/storages/amazon'; const { isRunning, startTask } = useLongTask(); @@ -16,7 +15,7 @@ watch(isRunning, (newVal) => { newVal ? emit('start') : emit('stop'); }); -const worker = pageWorker.useAmazonPageWorker(); +const worker = pageWorker.getAmazonPageWorker(); worker.channel.on('error', ({ message: msg }) => { timelines.value.push({ type: 'error', @@ -52,8 +51,10 @@ const task = async () => { content: '开始数据采集', }, ]; - await worker.runReviewPageTask(asinList, async (remains) => { - reviewAsinInput.value = remains.join('\n'); + await worker.runReviewPageTask(asinList, { + progress: (remains) => { + reviewAsinInput.value = remains.join('\n'); + }, }); timelines.value.push({ type: 'info', diff --git a/src/sidepanel/views/AmazonEntries/SearchPageEntry.vue b/src/sidepanel/views/AmazonEntries/SearchPageEntry.vue index 07aa45f..57a5bc5 100644 --- a/src/sidepanel/views/AmazonEntries/SearchPageEntry.vue +++ b/src/sidepanel/views/AmazonEntries/SearchPageEntry.vue @@ -19,7 +19,7 @@ watch(isRunning, (newVal) => { }); //#region Initial Page Worker -const worker = pageWorker.useAmazonPageWorker(); +const worker = pageWorker.getAmazonPageWorker(); worker.channel.on('error', ({ message: msg }) => { timelines.value.push({ type: 'error', @@ -54,16 +54,18 @@ const task = async () => { }, ]; timelines.value.push(); - await worker.runSearchPageTask(kws, async (remains) => { - if (remains.length > 0) { - timelines.value.push({ - type: 'info', - title: '开始', - time: new Date().toLocaleString(), - content: `关键词: ${remains[0]} 数据采集开始`, - }); - keywordsList.value = remains; - } + await worker.runSearchPageTask(kws, { + progress: (remains) => { + if (remains.length > 0) { + timelines.value.push({ + type: 'info', + title: '开始', + time: new Date().toLocaleString(), + content: `关键词: ${remains[0]} 数据采集开始`, + }); + keywordsList.value = remains; + } + }, }); timelines.value.push({ type: 'info', diff --git a/src/sidepanel/views/HomedepotSidepanel.vue b/src/sidepanel/views/HomedepotSidepanel.vue index cb71f43..944cdca 100644 --- a/src/sidepanel/views/HomedepotSidepanel.vue +++ b/src/sidepanel/views/HomedepotSidepanel.vue @@ -28,7 +28,14 @@ const handleStart = () => content: '任务开始', time: new Date().toLocaleString(), }); - await worker.runDetailPageTask(inputText.value.split('\n').filter((id) => /\d+/.exec(id))); + await worker.runDetailPageTask( + inputText.value.split('\n').filter((id) => /\d+/.exec(id)), + { + progress: (remains) => { + inputText.value = remains.join('\n'); + }, + }, + ); timelines.value.push({ type: 'info', title: `结束`,