diff --git a/electron-vue-template/public/icon/waiting.png b/electron-vue-template/public/icon/waiting.png
new file mode 100644
index 0000000..7a65c10
Binary files /dev/null and b/electron-vue-template/public/icon/waiting.png differ
diff --git a/electron-vue-template/src/main/main.ts b/electron-vue-template/src/main/main.ts
index 070f26e..4ac6a56 100644
--- a/electron-vue-template/src/main/main.ts
+++ b/electron-vue-template/src/main/main.ts
@@ -434,19 +434,6 @@ app.whenReady().then(() => {
createWindow();
createTray(mainWindow);
-
- // 开发模式快捷键
- if (isDev && mainWindow) {
- mainWindow.webContents.on('before-input-event', (event, input) => {
- if (input.control && input.shift && input.key.toLowerCase() === 'd') {
- console.log('[开发模式] 手动跳过后端启动');
- openAppIfNotOpened();
- } else if (input.control && input.shift && input.key.toLowerCase() === 's') {
- console.log('[开发模式] 手动启动后端服务');
- startSpringBoot();
- }
- });
- }
// 只有在不需要最小化启动时才显示 splash 窗口
if (!shouldMinimize) {
@@ -488,23 +475,9 @@ app.whenReady().then(() => {
splashWindow.once('ready-to-show', () => splashWindow?.show());
}
- console.log('[启动流程] 准备启动 Spring Boot...');
-
- // 开发模式:添加快捷键跳过后端启动
- if (isDev) {
- console.log('[开发模式] 按 Ctrl+Shift+D 跳过后端启动,直接进入应用');
- console.log('[开发模式] 按 Ctrl+Shift+S 手动启动后端服务');
-
- // 5秒后自动跳过,避免卡死
- setTimeout(() => {
- console.log('[开发模式] 自动跳过后端启动,直接进入应用');
- openAppIfNotOpened();
- }, 5000);
- }
-
- // setTimeout(() => {
- // startSpringBoot();
- // }, 200);
+ setTimeout(() => {
+ startSpringBoot();
+ }, 200);
app.on('activate', () => {
if (mainWindow && !mainWindow.isDestroyed()) {
diff --git a/electron-vue-template/src/renderer/components/amazon/AmazonDashboard.vue b/electron-vue-template/src/renderer/components/amazon/AmazonDashboard.vue
index dd2e320..40e988f 100644
--- a/electron-vue-template/src/renderer/components/amazon/AmazonDashboard.vue
+++ b/electron-vue-template/src/renderer/components/amazon/AmazonDashboard.vue
@@ -332,21 +332,8 @@ function handleExportData() {
-
-
+
+
@@ -365,21 +352,8 @@ function handleExportData() {
-
-
+
+
@@ -398,22 +372,10 @@ function handleExportData() {
-
-
+
+
+
@@ -1061,7 +1023,7 @@ function handleExportData() {
}
.status-item {
display: flex;
- align-items: center;
+ align-items: flex-start;
justify-content: center;
width: 24px;
height: 24px;
@@ -1075,12 +1037,15 @@ function handleExportData() {
.status-indicator-icon.spinning {
animation: spin 1.5s linear infinite;
}
+@keyframes spin {
+ from { transform: rotate(0deg); }
+ to { transform: rotate(360deg); }
+}
.status-connector {
- width: 2px;
- flex: 1;
+ width: 1px;
+ height: 114px;
background: #e5e7eb;
- margin: 6px 0;
- min-height: 50px;
+ margin: 8px 0;
}
/* 任务内容列 */
@@ -1096,6 +1061,7 @@ function handleExportData() {
padding: 0;
padding-bottom: 16px;
border-bottom: 1px solid rgba(0, 0, 0, 0.06);
+ min-height: 76px;
}
.task-item:first-child {
padding-top: 0;
diff --git a/electron-vue-template/src/renderer/components/amazon/TrademarkCheckPanel.vue b/electron-vue-template/src/renderer/components/amazon/TrademarkCheckPanel.vue
index fa67cd4..bff7e75 100644
--- a/electron-vue-template/src/renderer/components/amazon/TrademarkCheckPanel.vue
+++ b/electron-vue-template/src/renderer/components/amazon/TrademarkCheckPanel.vue
@@ -94,16 +94,20 @@ const regionOptions = [
// 查询类型多选(默认全部勾选)
const queryTypes = ref(['product', 'brand'])
-// 计算已完成的配置步骤数
+// 计算已完成的配置步骤数(不包括已隐藏的账号选择)
const completedSteps = computed(() => {
let count = 0
if (trademarkFileName.value) count++
- if (selectedAccount.value) count++
if (region.value) count++
if (queryTypes.value.length > 0) count++
return count
})
+// 计算总步骤数(动态)
+const totalConfigSteps = computed(() => {
+ return 3 // 1.导入表格 2.选择地区 3.选择查询类型
+})
+
const showTrialExpiredDialog = ref(false)
const trialExpiredType = ref<'device' | 'account' | 'both' | 'subscribe'>('account')
const showExcelExample = ref(false)
@@ -463,8 +467,9 @@ async function startTrademarkQuery() {
if (brandList.length > 0) {
const brandData = taskProgress.value.brand
brandData.total = brandList.length
- brandData.current = 0
+ brandData.current = 1 // 立即显示进行中状态
brandData.completed = 0
+ isBrandTaskRealData.value = true // 立即标记为真实数据
// 生成任务ID并立即开始轮询
brandTaskId.value = `task_${Date.now()}`
@@ -490,7 +495,6 @@ async function startTrademarkQuery() {
brandData.total = brandResult.data.checked || brandResult.data.total || brandData.total
brandData.current = brandData.total
brandData.completed = brandResult.data.unregistered || 0
- isBrandTaskRealData.value = true
await processBrandResult(brandResult)
} else {
throw new Error(brandResult.msg || '品牌筛查失败')
@@ -514,7 +518,6 @@ async function startTrademarkQuery() {
// 更新统计:显示过滤出的实际行数(而不是品牌数)
const brandData = taskProgress.value.brand
brandData.completed = filterResult.data.filteredRows.length
- isBrandTaskRealData.value = true
// 将品牌筛查结果作为展示数据
const brandItems = filterResult.data.filteredRows.map((row: any) => ({
@@ -856,7 +859,7 @@ defineExpose({