完成新需求
This commit is contained in:
@@ -3,42 +3,26 @@
|
||||
<div class="brand-page">
|
||||
<header class="top-bar">
|
||||
<div class="logo-area">
|
||||
<span class="app-name">南日AI-亚马逊</span>
|
||||
<span class="app-name">数富AI-亚马逊</span>
|
||||
<router-link to="/home" class="btn-home">返回首页</router-link>
|
||||
</div>
|
||||
|
||||
<div class="nav-tabs">
|
||||
<div class="nav-tab-group">
|
||||
<button
|
||||
type="button"
|
||||
class="nav-tab"
|
||||
:class="{ active: activeTab === 'brand' }"
|
||||
@click="activeTab = 'brand'"
|
||||
>
|
||||
<button type="button" class="nav-tab" :class="{ active: activeTab === 'brand' }"
|
||||
@click="activeTab = 'brand'">
|
||||
品牌检测
|
||||
</button>
|
||||
<button
|
||||
type="button"
|
||||
class="nav-tab"
|
||||
:class="{ active: activeTab === 'dedupe' }"
|
||||
@click="activeTab = 'dedupe'"
|
||||
>
|
||||
<button type="button" class="nav-tab" :class="{ active: activeTab === 'dedupe' }"
|
||||
@click="activeTab = 'dedupe'">
|
||||
数据去重
|
||||
</button>
|
||||
<button
|
||||
type="button"
|
||||
class="nav-tab"
|
||||
:class="{ active: activeTab === 'convert' }"
|
||||
@click="activeTab = 'convert'"
|
||||
>
|
||||
<button type="button" class="nav-tab" :class="{ active: activeTab === 'convert' }"
|
||||
@click="activeTab = 'convert'">
|
||||
格式转换
|
||||
</button>
|
||||
<button
|
||||
type="button"
|
||||
class="nav-tab"
|
||||
:class="{ active: activeTab === 'split' }"
|
||||
@click="activeTab = 'split'"
|
||||
>
|
||||
<button type="button" class="nav-tab" :class="{ active: activeTab === 'split' }"
|
||||
@click="activeTab = 'split'">
|
||||
数据拆分
|
||||
</button>
|
||||
</div>
|
||||
@@ -55,13 +39,8 @@
|
||||
<button type="button" class="opt-btn" @click="selectFolder">选择文件夹</button>
|
||||
</div>
|
||||
|
||||
<el-alert
|
||||
v-if="!hasPywebviewSupport"
|
||||
class="desktop-alert"
|
||||
type="warning"
|
||||
:closable="false"
|
||||
title="当前环境未检测到 pywebview,文件选择与本地保存能力需要在桌面端使用。"
|
||||
/>
|
||||
<el-alert v-if="!hasPywebviewSupport" class="desktop-alert" type="warning" :closable="false"
|
||||
title="当前环境未检测到 pywebview,文件选择与本地保存能力需要在桌面端使用。" />
|
||||
|
||||
<div class="selected-files">
|
||||
<template v-if="selectedPaths.length">
|
||||
@@ -117,12 +96,7 @@
|
||||
{{ runMode === 'immediate' ? '立即运行' : '添加任务' }}
|
||||
</button>
|
||||
<span v-if="running" class="loading-msg">生成中,请稍候…</span>
|
||||
<button
|
||||
v-if="activeTaskId"
|
||||
type="button"
|
||||
class="btn-cancel-run"
|
||||
@click="cancelActiveTask"
|
||||
>
|
||||
<button v-if="activeTaskId" type="button" class="btn-cancel-run" @click="cancelActiveTask">
|
||||
取消生成
|
||||
</button>
|
||||
</div>
|
||||
@@ -137,8 +111,10 @@
|
||||
<button type="button" class="template-download-row" @click="downloadTemplateXlsx">
|
||||
<span class="template-download-icon" aria-hidden="true">
|
||||
<svg viewBox="0 0 24 24" fill="none">
|
||||
<path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8l-6-6z" stroke="rgba(255,255,255,0.92)" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" />
|
||||
<path d="M14 2v6h6" stroke="rgba(255,255,255,0.92)" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" />
|
||||
<path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8l-6-6z"
|
||||
stroke="rgba(255,255,255,0.92)" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" />
|
||||
<path d="M14 2v6h6" stroke="rgba(255,255,255,0.92)" stroke-width="1.8" stroke-linecap="round"
|
||||
stroke-linejoin="round" />
|
||||
<path d="M8 13h8M8 17h5" stroke="rgba(255,255,255,0.86)" stroke-width="1.5" stroke-linecap="round" />
|
||||
</svg>
|
||||
</span>
|
||||
@@ -151,9 +127,12 @@
|
||||
<button type="button" class="template-download-row" @click="downloadTemplateZip">
|
||||
<span class="template-download-icon" aria-hidden="true">
|
||||
<svg viewBox="0 0 24 24" fill="none">
|
||||
<path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8l-6-6z" stroke="rgba(255,255,255,0.92)" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" />
|
||||
<path d="M14 2v6h6" stroke="rgba(255,255,255,0.92)" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" />
|
||||
<path d="M4 8h16M7 12h10M7 16h7" stroke="rgba(255,255,255,0.86)" stroke-width="1.5" stroke-linecap="round" />
|
||||
<path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8l-6-6z"
|
||||
stroke="rgba(255,255,255,0.92)" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" />
|
||||
<path d="M14 2v6h6" stroke="rgba(255,255,255,0.92)" stroke-width="1.8" stroke-linecap="round"
|
||||
stroke-linejoin="round" />
|
||||
<path d="M4 8h16M7 12h10M7 16h7" stroke="rgba(255,255,255,0.86)" stroke-width="1.5"
|
||||
stroke-linecap="round" />
|
||||
</svg>
|
||||
</span>
|
||||
<span class="template-download-text">
|
||||
@@ -180,10 +159,7 @@
|
||||
</div>
|
||||
|
||||
<div class="task-right">
|
||||
<div
|
||||
v-if="task.status === 'running' && (task.progress_total || 0) > 0"
|
||||
class="inline-progress"
|
||||
>
|
||||
<div v-if="task.status === 'running' && (task.progress_total || 0) > 0" class="inline-progress">
|
||||
<div class="progress-bar-bg small">
|
||||
<div class="progress-bar-fill" :style="{ width: `${getTaskProgressPercent(task)}%` }"></div>
|
||||
</div>
|
||||
@@ -196,21 +172,13 @@
|
||||
{{ getStatusLabel(task.status) }}
|
||||
</span>
|
||||
|
||||
<button
|
||||
v-if="task.status === 'running'"
|
||||
type="button"
|
||||
class="btn-cancel"
|
||||
@click="cancelTask(task.id)"
|
||||
>
|
||||
<button v-if="task.status === 'running'" type="button" class="btn-cancel"
|
||||
@click="cancelTask(task.id)">
|
||||
取消
|
||||
</button>
|
||||
|
||||
<button
|
||||
v-if="task.result_paths?.zip_url"
|
||||
type="button"
|
||||
class="download"
|
||||
@click="downloadTaskResult(task)"
|
||||
>
|
||||
<button v-if="task.result_paths?.zip_url" type="button" class="download"
|
||||
@click="downloadTaskResult(task)">
|
||||
下载结果
|
||||
</button>
|
||||
|
||||
@@ -560,7 +528,7 @@ async function downloadTaskResult(task: BrandTaskItem) {
|
||||
}
|
||||
|
||||
onMounted(() => {
|
||||
document.title = '亚马逊 - 南日AI'
|
||||
document.title = '亚马逊 - 数富AI'
|
||||
loadTasks().catch(() => undefined)
|
||||
taskRefreshTimer = window.setInterval(() => {
|
||||
loadTasks().catch(() => undefined)
|
||||
|
||||
Reference in New Issue
Block a user