补全一些基础信息

This commit is contained in:
yml2213
2026-05-13 20:18:58 +08:00
parent c2fd9078b9
commit a95e48b708
23 changed files with 1237 additions and 89 deletions
@@ -0,0 +1,119 @@
<script setup lang="ts">
import type { AdminNinetyoneOrderItem, AdminNinetyoneOrderListResult } from '@/types/admin'
import { formatAdminDateTime } from '@/utils/admin-time'
type Props = {
ninetyoneLoading: boolean
ninetyoneActionLoadingId: number | null
ninetyoneResultError: string
ninetyoneStatus: 'pending_config' | 'all' | 'manual_failed'
ninetyoneOrders: AdminNinetyoneOrderListResult
ninetyoneStats: {
total: number
currentCount: number
pendingCount: number
failedCount: number
taskReadyCount: number
}
loadNinetyoneOrders: (page?: number) => void | Promise<void>
handleNinetyoneStatusChange: (status: 'pending_config' | 'all' | 'manual_failed') => void | Promise<void>
handleNinetyoneRetryOrder: (item: AdminNinetyoneOrderItem) => void | Promise<void>
handleNinetyoneFailOrder: (item: AdminNinetyoneOrderItem) => void | Promise<void>
}
defineProps<Props>()
</script>
<template>
<section class="meta-card">
<div class="meta-line">
<span class="meta-label">职责</span>
<span>接收 91卡券推送订单未命中履约配置时先进入待补全队列补完商品规则后可手动重试生成任务</span>
</div>
<div class="meta-line">
<span class="meta-label">处理建议</span>
<span>先到快手 Cloud 新履约页为 91 productNo 配置规则再回到这里点击重试</span>
</div>
</section>
<section class="table-card">
<div class="section-title-row">
<div>
<h3>91卡券订单队列</h3>
<p>当前筛选 {{ ninetyoneStats.currentCount }} 总计 {{ ninetyoneStats.total }} 已生成任务 {{ ninetyoneStats.taskReadyCount }} </p>
</div>
<div class="section-actions">
<el-button-group>
<el-button :type="ninetyoneStatus === 'pending_config' ? 'primary' : 'default'" round @click="handleNinetyoneStatusChange('pending_config')">待补全</el-button>
<el-button :type="ninetyoneStatus === 'manual_failed' ? 'primary' : 'default'" round @click="handleNinetyoneStatusChange('manual_failed')">失败</el-button>
<el-button :type="ninetyoneStatus === 'all' ? 'primary' : 'default'" round @click="handleNinetyoneStatusChange('all')">全部</el-button>
</el-button-group>
<el-button :loading="ninetyoneLoading" round @click="loadNinetyoneOrders(ninetyoneOrders.page)">刷新</el-button>
</div>
</div>
<p v-if="ninetyoneResultError" class="error-copy">{{ ninetyoneResultError }}</p>
<div v-if="ninetyoneLoading" class="empty-inline">正在读取 91卡券订单</div>
<table v-else class="data-table">
<thead>
<tr>
<th>订单</th>
<th>商品</th>
<th>状态</th>
<th>时间</th>
<th>操作</th>
</tr>
</thead>
<tbody>
<tr v-for="item in ninetyoneOrders.items" :key="item.orderId">
<td>
<div class="cell-stack">
<strong>{{ item.orderNo }}</strong>
<span class="cell-subtle">{{ item.outTradeNo || '-' }}</span>
</div>
</td>
<td>
<div class="cell-stack">
<strong>{{ item.productName || item.productNo || '-' }}</strong>
<span class="cell-subtle">productNo: {{ item.productNo || '-' }}</span>
<span class="cell-subtle">数量{{ item.buyNum || 0 }}</span>
</div>
</td>
<td>
<div class="cell-stack">
<strong>{{ item.orderStatus }}</strong>
<span class="cell-subtle">任务 {{ item.taskCount }}</span>
<span v-if="item.failReason" class="cell-subtle">{{ item.failReason }}</span>
</div>
</td>
<td>{{ formatAdminDateTime(item.updatedAt || item.createdAt) }}</td>
<td>
<div class="row-actions">
<el-button
:loading="ninetyoneActionLoadingId === item.orderId"
link
type="primary"
@click="handleNinetyoneRetryOrder(item)"
>
重试生成任务
</el-button>
<el-button
v-if="item.orderStatus !== 'manual_failed'"
:loading="ninetyoneActionLoadingId === item.orderId"
link
type="danger"
@click="handleNinetyoneFailOrder(item)"
>
标记失败
</el-button>
</div>
</td>
</tr>
<tr v-if="ninetyoneOrders.items.length === 0">
<td colspan="5" class="empty-inline">当前没有 91卡券订单</td>
</tr>
</tbody>
</table>
</section>
</template>