删除库存和旧回调管理
This commit is contained in:
@@ -5,7 +5,6 @@ import {
|
||||
closeAdminTask,
|
||||
markAdminTaskManualReview,
|
||||
regenerateAdminTaskClaimLink,
|
||||
releaseAdminTaskInventoryBinding,
|
||||
retryAdminTask,
|
||||
} from '@/services/admin'
|
||||
|
||||
@@ -14,7 +13,6 @@ import AdminTaskActionBar from './components/AdminTaskActionBar.vue'
|
||||
import AdminTaskEventsSection from './components/AdminTaskEventsSection.vue'
|
||||
import AdminTaskHeroSection from './components/AdminTaskHeroSection.vue'
|
||||
import AdminTaskInfoSection from './components/AdminTaskInfoSection.vue'
|
||||
import AdminTaskInventoryBindingsSection from './components/AdminTaskInventoryBindingsSection.vue'
|
||||
import AdminTaskManualDispatchSection from './components/AdminTaskManualDispatchSection.vue'
|
||||
import AdminTaskRedeemResolutionSection from './components/AdminTaskRedeemResolutionSection.vue'
|
||||
import AdminTaskScreenshotSection from './components/AdminTaskScreenshotSection.vue'
|
||||
@@ -135,20 +133,6 @@ onMounted(loadDetail)
|
||||
|
||||
<AdminTaskRedeemResolutionSection v-if="detail.redeemResolution" :detail="detail" />
|
||||
|
||||
<AdminTaskInventoryBindingsSection
|
||||
v-if="!isKuaishouCloudTask"
|
||||
:detail="detail"
|
||||
:can-view-sensitive-task-data="canViewSensitiveTaskData"
|
||||
:action-loading="actionLoading"
|
||||
@release-binding="
|
||||
runAction(
|
||||
() => releaseAdminTaskInventoryBinding(detail!.task.taskId, $event),
|
||||
'库存绑定已释放',
|
||||
`确认释放该库存绑定吗?`,
|
||||
)
|
||||
"
|
||||
/>
|
||||
|
||||
<AdminTaskManualDispatchSection
|
||||
v-if="detail.task.executorKey === 'manual_dispatch'"
|
||||
:detail="detail"
|
||||
|
||||
@@ -14,10 +14,6 @@ import {
|
||||
} from "@/services/admin";
|
||||
import type { AdminTaskListItem } from "@/types/admin";
|
||||
import { hasAdminRole } from "@/utils/admin-auth";
|
||||
import {
|
||||
formatBindingRoleSummary,
|
||||
formatBindingCountSummary,
|
||||
} from "@/utils/admin-display";
|
||||
import { adminTaskStatusOptions } from "@/utils/admin-options";
|
||||
import { formatAdminDateTime } from "@/utils/admin-time";
|
||||
|
||||
@@ -140,7 +136,7 @@ onMounted(() => {
|
||||
<div class="tasks-page list-page">
|
||||
<AdminPageHeader
|
||||
title="交付任务"
|
||||
description="更紧凑地查看任务状态、角色绑定、库存凭据和异常信息。"
|
||||
description="更紧凑地查看任务状态、角色绑定和异常信息。"
|
||||
>
|
||||
<template #extra>
|
||||
<span class="total-badge">共 {{ pagination.total }} 条任务</span>
|
||||
@@ -292,7 +288,7 @@ onMounted(() => {
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="角色 / 凭据" min-width="180">
|
||||
<el-table-column label="角色信息" min-width="180">
|
||||
<template #default="{ row }">
|
||||
<div class="cell-stack">
|
||||
<span
|
||||
@@ -306,32 +302,6 @@ onMounted(() => {
|
||||
<span class="cell-subline"
|
||||
>登录 {{ row.loginType || "-" }}</span
|
||||
>
|
||||
<span
|
||||
class="cell-subline"
|
||||
:title="row.inventoryDisplayMasked || '-'"
|
||||
>凭据 {{ row.inventoryDisplayMasked || "-" }}</span
|
||||
>
|
||||
<span
|
||||
class="cell-subline"
|
||||
:title="
|
||||
formatBindingRoleSummary(
|
||||
row.bindingSummary.roleKeys,
|
||||
'无绑定角色'
|
||||
)
|
||||
"
|
||||
>绑定
|
||||
{{
|
||||
formatBindingRoleSummary(
|
||||
row.bindingSummary.roleKeys,
|
||||
"无绑定角色"
|
||||
)
|
||||
}}</span
|
||||
>
|
||||
<span
|
||||
class="cell-subline cell-subline--strong"
|
||||
:title="formatBindingCountSummary(row.bindingSummary)"
|
||||
>{{ formatBindingCountSummary(row.bindingSummary) }}</span
|
||||
>
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
@@ -367,11 +337,7 @@ onMounted(() => {
|
||||
v-if="canManageTaskLifecycle"
|
||||
:disabled="
|
||||
row.executorKey === 'manual_dispatch' ||
|
||||
![
|
||||
'retry_pending',
|
||||
'manual_review',
|
||||
'waiting_inventory',
|
||||
].includes(row.status)
|
||||
!['retry_pending', 'manual_review'].includes(row.status)
|
||||
"
|
||||
:loading="actionLoadingId === row.taskId"
|
||||
size="small"
|
||||
|
||||
@@ -36,21 +36,12 @@ defineProps<Props>()
|
||||
{{ detail.task.resultMessage || '-' }}
|
||||
</el-descriptions-item>
|
||||
<template v-if="canViewSensitiveTaskData">
|
||||
<el-descriptions-item label="库存凭据">
|
||||
{{ detail.inventory?.displayValue || '-' }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="凭据类型">
|
||||
{{ detail.inventory?.credentialType || '-' }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="库存状态">
|
||||
<AdminStatusTag :status="detail.inventory?.status || ''" />
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="Claim Token">
|
||||
{{ detail.claimToken?.token || '-' }}
|
||||
</el-descriptions-item>
|
||||
</template>
|
||||
<el-descriptions-item v-else label="库存 / Token" :span="2">
|
||||
客服账号不可查看库存凭据与原始领取 Token
|
||||
<el-descriptions-item v-else label="Claim Token" :span="2">
|
||||
客服账号不可查看原始领取 Token
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="Token 状态">
|
||||
<AdminStatusTag :status="detail.claimToken?.status || ''" />
|
||||
|
||||
@@ -1,98 +0,0 @@
|
||||
<script setup lang="ts">
|
||||
import AdminStatusTag from '@/components/admin/AdminStatusTag.vue'
|
||||
import type { AdminTaskDetail } from '@/types/admin'
|
||||
import { hasAdminRole } from '@/utils/admin-auth'
|
||||
import { formatAdminDateTime } from '@/utils/admin-time'
|
||||
|
||||
interface Props {
|
||||
detail: AdminTaskDetail
|
||||
canViewSensitiveTaskData: boolean
|
||||
actionLoading: boolean
|
||||
}
|
||||
|
||||
defineProps<Props>()
|
||||
|
||||
const emit = defineEmits<{
|
||||
releaseBinding: [bindingId: number]
|
||||
}>()
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<el-card shadow="never" class="section-card">
|
||||
<h3>库存绑定</h3>
|
||||
<p class="section-copy">
|
||||
这里展示任务当前和历史绑定过的库存项,便于核对多库存任务的真实履约轨迹。
|
||||
</p>
|
||||
<el-table :data="detail.inventoryBindings" size="small">
|
||||
<el-table-column label="绑定" width="100">
|
||||
<template #default="{ row: binding }">
|
||||
<div>#{{ binding.bindingId }}</div>
|
||||
<div v-if="binding.isPrimary" class="binding-primary">主库存项</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="角色" min-width="120">
|
||||
<template #default="{ row: binding }">
|
||||
<div>{{ binding.roleKey || '-' }}</div>
|
||||
<div class="binding-meta">数量 {{ binding.quantity }}</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="库存项" min-width="180">
|
||||
<template #default="{ row: binding }">
|
||||
<div>ID {{ binding.inventoryItemId }}</div>
|
||||
<div>{{ binding.skuCode || '-' }}</div>
|
||||
<div class="binding-meta">
|
||||
{{ binding.credentialType || '-' }} ·
|
||||
{{ binding.batchNo || '无批次' }}
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="状态" min-width="160">
|
||||
<template #default="{ row: binding }">
|
||||
<div class="status-stack">
|
||||
<AdminStatusTag :status="binding.bindingStatus" />
|
||||
<AdminStatusTag :status="binding.inventoryStatus" />
|
||||
</div>
|
||||
<div v-if="binding.invalidReason" class="binding-meta">
|
||||
{{
|
||||
binding.inventoryStatus === 'invalid'
|
||||
? '作废原因'
|
||||
: binding.inventoryStatus === 'consumed'
|
||||
? '消耗原因'
|
||||
: '处理原因'
|
||||
}}:{{ binding.invalidReason }}
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="凭据内容" min-width="180">
|
||||
<template #default="{ row: binding }">
|
||||
{{ canViewSensitiveTaskData ? binding.displayValue || '-' : '客服不可见' }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="时间" min-width="180">
|
||||
<template #default="{ row: binding }">
|
||||
<div>绑定 {{ formatAdminDateTime(binding.createdAt) }}</div>
|
||||
<div class="binding-meta">消费 {{ formatAdminDateTime(binding.consumedAt) }}</div>
|
||||
<div class="binding-meta">释放 {{ formatAdminDateTime(binding.releasedAt) }}</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" width="100">
|
||||
<template #default="{ row: binding }">
|
||||
<el-button
|
||||
v-if="hasAdminRole('admin') && binding.canRelease"
|
||||
:loading="actionLoading"
|
||||
link
|
||||
@click="emit('releaseBinding', binding.bindingId)"
|
||||
>
|
||||
释放绑定
|
||||
</el-button>
|
||||
<span v-else class="binding-meta">-</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<template #empty>
|
||||
<el-empty description="当前任务还没有库存绑定记录" :image-size="60" />
|
||||
</template>
|
||||
</el-table>
|
||||
</el-card>
|
||||
</template>
|
||||
|
||||
<style scoped src="../AdminTaskDetail.css"></style>
|
||||
@@ -40,7 +40,7 @@ defineProps<Props>()
|
||||
<el-card
|
||||
shadow="never"
|
||||
v-for="attempt in detail.redeemResolution!.attempts"
|
||||
:key="`${attempt.attempt}-${attempt.inventoryItemId || 'na'}`"
|
||||
:key="attempt.attempt"
|
||||
class="redeem-attempt-card"
|
||||
>
|
||||
<div class="redeem-attempt-head">
|
||||
@@ -48,10 +48,6 @@ defineProps<Props>()
|
||||
<span class="redeem-outcome">{{ formatRedeemOutcomeLabel(attempt.outcome) }}</span>
|
||||
</div>
|
||||
<div class="redeem-attempt-grid">
|
||||
<div>
|
||||
<span>库存项</span>
|
||||
<strong>{{ attempt.inventoryItemId ? `#${attempt.inventoryItemId}` : '-' }}</strong>
|
||||
</div>
|
||||
<div>
|
||||
<span>凭据</span>
|
||||
<strong>{{ attempt.codeMasked || '-' }}</strong>
|
||||
|
||||
Reference in New Issue
Block a user