1
This commit is contained in:
@@ -1,9 +1,14 @@
|
||||
<script setup lang="ts">
|
||||
import { ref, computed, onMounted } from 'vue'
|
||||
import { ElMessage } from 'element-plus'
|
||||
import { ElMessage, ElMessageBox } from 'element-plus'
|
||||
import { amazonApi } from '../../api/amazon'
|
||||
import { handlePlatformFileExport } from '../../utils/settings'
|
||||
|
||||
// 接收VIP状态
|
||||
const props = defineProps<{
|
||||
isVip: boolean
|
||||
}>()
|
||||
|
||||
// 响应式状态
|
||||
const loading = ref(false) // 主加载状态
|
||||
const tableLoading = ref(false) // 表格加载状态
|
||||
@@ -85,6 +90,22 @@ async function onDrop(e: DragEvent) {
|
||||
|
||||
// 批量获取产品信息 - 核心数据处理逻辑
|
||||
async function batchGetProductInfo(asinList: string[]) {
|
||||
// VIP检查
|
||||
if (!props.isVip) {
|
||||
try {
|
||||
await ElMessageBox.confirm(
|
||||
'VIP已过期,数据采集功能受限。请联系管理员续费后继续使用。',
|
||||
'VIP功能限制',
|
||||
{
|
||||
confirmButtonText: '我知道了',
|
||||
showCancelButton: false,
|
||||
type: 'warning'
|
||||
}
|
||||
)
|
||||
} catch {}
|
||||
return
|
||||
}
|
||||
|
||||
try {
|
||||
currentAsin.value = '正在处理...'
|
||||
progressPercentage.value = 0
|
||||
@@ -165,8 +186,6 @@ async function startQueuedFetch() {
|
||||
|
||||
// 导出Excel数据
|
||||
const exportLoading = ref(false)
|
||||
const exportProgress = ref(0)
|
||||
const showExportProgress = ref(false)
|
||||
|
||||
async function exportToExcel() {
|
||||
if (!localProductData.value.length) {
|
||||
@@ -175,12 +194,6 @@ async function exportToExcel() {
|
||||
}
|
||||
|
||||
exportLoading.value = true
|
||||
showExportProgress.value = true
|
||||
exportProgress.value = 0
|
||||
|
||||
const progressInterval = setInterval(() => {
|
||||
if (exportProgress.value < 90) exportProgress.value += Math.random() * 20
|
||||
}, 100)
|
||||
|
||||
// 生成Excel HTML格式
|
||||
let html = `<table>
|
||||
@@ -198,17 +211,12 @@ async function exportToExcel() {
|
||||
const blob = new Blob([html], { type: 'application/vnd.ms-excel' })
|
||||
const fileName = `Amazon产品数据_${new Date().toISOString().slice(0, 10)}.xls`
|
||||
|
||||
await handlePlatformFileExport('amazon', blob, fileName)
|
||||
const success = await handlePlatformFileExport('amazon', blob, fileName)
|
||||
|
||||
clearInterval(progressInterval)
|
||||
exportProgress.value = 100
|
||||
showMessage('Excel文件导出成功!', 'success')
|
||||
|
||||
setTimeout(() => {
|
||||
showExportProgress.value = false
|
||||
exportLoading.value = false
|
||||
exportProgress.value = 0
|
||||
}, 2000)
|
||||
if (success) {
|
||||
showMessage('Excel文件导出成功!', 'success')
|
||||
}
|
||||
exportLoading.value = false
|
||||
}
|
||||
|
||||
// 获取卖家/配送方信息 - 数据处理辅助函数
|
||||
@@ -360,13 +368,6 @@ onMounted(async () => {
|
||||
<div class="step-header"><div class="title">导出数据</div></div>
|
||||
<div class="action-buttons column">
|
||||
<el-button size="small" class="w100 btn-blue" :disabled="!localProductData.length || loading || exportLoading" :loading="exportLoading" @click="exportToExcel">{{ exportLoading ? '导出中...' : '导出Excel' }}</el-button>
|
||||
<!-- 导出进度条 -->
|
||||
<div v-if="showExportProgress" class="export-progress">
|
||||
<div class="export-progress-bar">
|
||||
<div class="export-progress-fill" :style="{ width: exportProgress + '%' }"></div>
|
||||
</div>
|
||||
<div class="export-progress-text">{{ Math.round(exportProgress) }}%</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -529,10 +530,6 @@ onMounted(async () => {
|
||||
.progress-fill { height: 100%; background: #1677FF; border-radius: 999px; transition: width 0.3s ease; }
|
||||
.progress-text { font-size: 13px; color: #1677FF; font-weight: 500; min-width: 44px; text-align: right; }
|
||||
.current-status { font-size: 12px; color: #606266; padding-left: 2px; }
|
||||
.export-progress { display: flex; align-items: center; gap: 8px; margin-top: 6px; padding: 0 4px; }
|
||||
.export-progress-bar { flex: 1; height: 4px; background: #e3eeff; border-radius: 2px; overflow: hidden; }
|
||||
.export-progress-fill { height: 100%; background: #1677FF; border-radius: 2px; transition: width 0.3s ease; }
|
||||
.export-progress-text { font-size: 11px; color: #1677FF; font-weight: 500; min-width: 32px; text-align: right; }
|
||||
.table-container { display: flex; flex-direction: column; flex: 1; min-height: 400px; overflow: hidden; }
|
||||
.table-section { flex: 1; overflow: hidden; position: relative; background: #fff; border: 1px solid #ebeef5; border-radius: 4px; display: flex; flex-direction: column; }
|
||||
.table-wrapper { flex: 1; overflow: auto; }
|
||||
|
||||
Reference in New Issue
Block a user