新需求更新 同步更新

This commit is contained in:
supernijia
2026-08-06 01:11:54 +08:00
parent 9048bbb7f8
commit 28e7fce11c
112 changed files with 7739 additions and 637 deletions
@@ -3,7 +3,7 @@
<BrandTopBar active="pricing" />
<div class="main-content">
<aside class="left-panel">
<aside class="left-panel left-panel--with-template">
<!-- 运行模式 -->
<div class="section-title">跟价模式</div>
<div class="mode-zone">
@@ -55,37 +55,36 @@
</div>
</template>
<template v-if="statusModeEnabled">
<div class="price-track-shop-candidates">
<!-- 店铺输入和备选店铺在两种 ASIN 来源模式下都可用 -->
<div class="section-title">店铺名称</div>
<div class="input-zone">
<div class="hint">输入店铺名后点确认加入下方备选区可同时配合上方模式使用</div>
<div class="input-row">
<el-input v-model="shopInput" clearable placeholder="请输入店铺名称" @keyup.enter="confirmAdd" />
<button type="button" class="opt-btn" :disabled="adding" @click="confirmAdd">
{{ adding ? '保存中' : '确认' }}
</button>
</div>
</div>
<!-- 店铺输入 -->
<div class="section-title">店铺名称</div>
<div class="input-zone">
<div class="hint">输入店铺名后点确认加入下方备选区可同时配合上方模式使用</div>
<div class="input-row">
<el-input v-model="shopInput" clearable placeholder="请输入店铺名称" @keyup.enter="confirmAdd" />
<button type="button" class="opt-btn" :disabled="adding" @click="confirmAdd">
{{ adding ? '保存中' : '确认' }}
</button>
<!-- 备选区域 -->
<div class="section-title">备选店铺</div>
<div v-if="!candidates.length" class="empty-candidates">暂无备选店铺请先输入并确认</div>
<div v-else class="candidate-table-scroll">
<el-table :data="candidates" row-key="id" height="160" class="candidate-table"
@selection-change="onSelectionChange">
<el-table-column type="selection" width="42" />
<el-table-column prop="shopName" label="店铺名" min-width="120" show-overflow-tooltip />
<el-table-column label="操作" width="72" align="center">
<template #default="{ row }">
<button type="button" class="link-danger" @click="removeCandidate(row)">删除</button>
</template>
</el-table-column>
</el-table>
</div>
</div>
<!-- 备选区域 -->
<div class="section-title">备选店铺</div>
<div v-if="!candidates.length" class="empty-candidates">暂无备选店铺请先输入并确认</div>
<div v-else class="candidate-table-scroll">
<el-table :data="candidates" row-key="id" height="160" class="candidate-table"
@selection-change="onSelectionChange">
<el-table-column type="selection" width="42" />
<el-table-column prop="shopName" label="店铺名" min-width="120" show-overflow-tooltip />
<el-table-column label="操作" width="72" align="center">
<template #default="{ row }">
<button type="button" class="link-danger" @click="removeCandidate(row)">删除</button>
</template>
</el-table-column>
</el-table>
</div>
</template>
<template v-if="!asinModeEnabled">
<!-- 国家顺序 -->
<div class="section-title">处理国家与顺序</div>
@@ -148,6 +147,8 @@
<div class="queue-debug-line">{{ queuePushResult }}</div>
<pre v-if="queuePayloadText" class="queue-debug-payload">{{ queuePayloadText }}</pre>
</div>
<ModuleTemplateDownload module-code="price-track" filename="指定ASIN跟价 文档格式.xlsx" />
</aside>
<section class="right-panel">
@@ -263,6 +264,7 @@
import { computed, onMounted, onUnmounted, ref } from 'vue'
import { ElMessage } from 'element-plus'
import BrandTopBar from '@/pages/brand/components/BrandTopBar.vue'
import ModuleTemplateDownload from '@/shared/components/ModuleTemplateDownload.vue'
import ZiniaoVersionSetting from '@/shared/components/ZiniaoVersionSetting.vue'
import { LISTING_FILTER_OPTIONS, type ListingFilterValue } from '@/pages/brand/components/listingFilters'
import { expandBrandFolderRecursive } from '@/shared/api/brand'
@@ -1761,6 +1763,10 @@ onUnmounted(() => {
border-right: 1px solid #2a2a2a;
}
.price-track-shop-candidates {
flex: 0 0 auto;
}
.right-panel {
flex: 1;
display: flex;