彻底重构-4
This commit is contained in:
@@ -9,7 +9,6 @@ import {
|
||||
fetchAdminTasks,
|
||||
markAdminTaskManualReview,
|
||||
regenerateAdminTaskClaimLink,
|
||||
releaseAdminTaskCdk,
|
||||
retryAdminTask,
|
||||
} from '@/services/admin'
|
||||
import type { AdminPagination, AdminTaskActionResponse, AdminTaskListItem } from '@/types/admin'
|
||||
@@ -34,7 +33,7 @@ const pagination = ref<AdminPagination>({
|
||||
total: 0,
|
||||
})
|
||||
|
||||
type AdminTaskActionKey = 'retry' | 'regenerate_claim_link' | 'release_cdk' | 'manual_review' | 'close'
|
||||
type AdminTaskActionKey = 'retry' | 'regenerate_claim_link' | 'manual_review' | 'close'
|
||||
|
||||
async function loadTasks(page = pagination.value.page) {
|
||||
loading.value = true
|
||||
@@ -60,6 +59,21 @@ async function loadTasks(page = pagination.value.page) {
|
||||
}
|
||||
}
|
||||
|
||||
function formatBindingRoles(item: AdminTaskListItem) {
|
||||
const roles = item.bindingSummary.roleKeys
|
||||
|
||||
if (!Array.isArray(roles) || roles.length === 0) {
|
||||
return '无绑定角色'
|
||||
}
|
||||
|
||||
return roles.join(' / ')
|
||||
}
|
||||
|
||||
function formatBindingCountSummary(item: AdminTaskListItem) {
|
||||
const summary = item.bindingSummary
|
||||
return `共 ${summary.totalBindingCount} 条 · 预占 ${summary.reservedBindingCount} · 已消费 ${summary.consumedBindingCount} · 已释放 ${summary.releasedBindingCount}`
|
||||
}
|
||||
|
||||
function closeActionMenu() {
|
||||
openedActionTaskId.value = null
|
||||
}
|
||||
@@ -139,16 +153,6 @@ function handleActionCommand(command: `${AdminTaskActionKey}:${number}`) {
|
||||
return
|
||||
}
|
||||
|
||||
if (actionKey === 'release_cdk') {
|
||||
void runAction(
|
||||
item.taskId,
|
||||
() => releaseAdminTaskCdk(item.taskId),
|
||||
'CDK 已释放',
|
||||
`确认释放任务 ${item.taskNo} 当前预占的 CDK 吗?`,
|
||||
)
|
||||
return
|
||||
}
|
||||
|
||||
if (actionKey === 'manual_review') {
|
||||
void runAction(
|
||||
item.taskId,
|
||||
@@ -173,7 +177,7 @@ function handleActionCommand(command: `${AdminTaskActionKey}:${number}`) {
|
||||
<header class="panel-header">
|
||||
<div>
|
||||
<h1>交付任务</h1>
|
||||
<p>查看交付状态、角色识别、预占 CDK 和错误信息。</p>
|
||||
<p>查看交付状态、角色识别、库存凭据分配和错误信息。</p>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
@@ -212,7 +216,7 @@ function handleActionCommand(command: `${AdminTaskActionKey}:${number}`) {
|
||||
<tr>
|
||||
<th>任务信息</th>
|
||||
<th>任务进度</th>
|
||||
<th>商品 / CDK</th>
|
||||
<th>商品 / 凭据</th>
|
||||
<th>角色绑定</th>
|
||||
<th>错误</th>
|
||||
<th>操作</th>
|
||||
@@ -249,7 +253,15 @@ function handleActionCommand(command: `${AdminTaskActionKey}:${number}`) {
|
||||
<div class="goods-cell">
|
||||
<span class="goods-title" :title="item.skuName || item.skuCode">{{ item.skuName || item.skuCode }}</span>
|
||||
<span class="goods-subline">SKU {{ item.skuCode || '-' }}</span>
|
||||
<span class="goods-subline" :title="item.reservedCdkCodeMasked || '-'">CDK {{ item.reservedCdkCodeMasked || '-' }}</span>
|
||||
<span class="goods-subline" :title="item.inventoryDisplayMasked || '-'">
|
||||
凭据 {{ item.inventoryDisplayMasked || '-' }}
|
||||
</span>
|
||||
<span class="goods-subline" :title="formatBindingRoles(item)">
|
||||
绑定 {{ formatBindingRoles(item) }}
|
||||
</span>
|
||||
<span class="goods-subline goods-subline-strong" :title="formatBindingCountSummary(item)">
|
||||
{{ formatBindingCountSummary(item) }}
|
||||
</span>
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
@@ -265,6 +277,7 @@ function handleActionCommand(command: `${AdminTaskActionKey}:${number}`) {
|
||||
<td>
|
||||
<div class="action-cell">
|
||||
<el-button
|
||||
:disabled="item.executorKey === 'manual_dispatch' || !['retry_pending', 'manual_review', 'waiting_inventory'].includes(item.status)"
|
||||
:loading="actionLoadingId === item.taskId"
|
||||
class="primary-action"
|
||||
plain
|
||||
@@ -283,12 +296,14 @@ function handleActionCommand(command: `${AdminTaskActionKey}:${number}`) {
|
||||
<span class="dropdown-icon">{{ openedActionTaskId === item.taskId ? '▴' : '▾' }}</span>
|
||||
</el-button>
|
||||
<div v-if="openedActionTaskId === item.taskId" class="more-action-menu">
|
||||
<button class="menu-action-button" type="button" @click="handleActionCommand(`regenerate_claim_link:${item.taskId}`)">
|
||||
<button
|
||||
v-if="item.executorKey !== 'manual_dispatch'"
|
||||
class="menu-action-button"
|
||||
type="button"
|
||||
@click="handleActionCommand(`regenerate_claim_link:${item.taskId}`)"
|
||||
>
|
||||
重发链接
|
||||
</button>
|
||||
<button class="menu-action-button" type="button" @click="handleActionCommand(`release_cdk:${item.taskId}`)">
|
||||
释放 CDK
|
||||
</button>
|
||||
<button class="menu-action-button" type="button" @click="handleActionCommand(`manual_review:${item.taskId}`)">
|
||||
转人工
|
||||
</button>
|
||||
@@ -450,6 +465,11 @@ function handleActionCommand(command: `${AdminTaskActionKey}:${number}`) {
|
||||
color: #98a2b3;
|
||||
}
|
||||
|
||||
.goods-subline-strong {
|
||||
color: #1d3555;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.cell-error {
|
||||
display: -webkit-box;
|
||||
overflow: hidden;
|
||||
|
||||
Reference in New Issue
Block a user