This commit is contained in:
van
2026-05-19 23:15:08 +08:00
parent a82ae229b3
commit 17c32fa1c3
2 changed files with 126 additions and 4 deletions

View File

@@ -35,6 +35,11 @@ export function listGoofishOrder(query) {
return request({ url: '/jarvis/erpGoofishOrder/list', method: 'get', params: query })
}
/** 日日顺 + 已关联京东:已出库(去重运单等)/待出库 统计,供列表右侧展示 */
export function getGoofishRrsLogisticsStats() {
return request({ url: '/jarvis/erpGoofishOrder/stats/rrsLogistics', method: 'get' })
}
export function getGoofishOrder(id) {
return request({ url: '/jarvis/erpGoofishOrder/' + id, method: 'get' })
}

View File

@@ -1,5 +1,6 @@
<template>
<div class="app-container">
<div class="app-container goofish-order-layout">
<div class="goofish-order-main">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="96px">
<el-form-item label="AppKey" prop="appKey">
<el-input v-model="queryParams.appKey" placeholder="可选" clearable @keyup.enter.native="handleQuery" />
@@ -221,6 +222,28 @@
<pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize" @pagination="getList" />
</div>
<aside class="goofish-rrs-aside" v-hasPermi="['jarvis:erpGoofishOrder:list']">
<el-card shadow="hover" class="goofish-rrs-card" v-loading="rrsStatsLoading">
<div slot="header" class="goofish-rrs-card-hd">
<span>日日顺物流</span>
</div>
<p class="goofish-rrs-desc">已关联京东 · 承运含 rrs 日日顺</p>
<div class="goofish-rrs-metric">
<span class="goofish-rrs-label">已出库</span>
<strong class="goofish-rrs-val goofish-rrs-val--ok">{{ rrsStats.shippedOutboundCount }}</strong>
<span class="goofish-rrs-hint-row">去重单号 + 无单号已发</span>
</div>
<el-divider class="goofish-rrs-divider" />
<div class="goofish-rrs-metric">
<span class="goofish-rrs-label">待出库</span>
<strong class="goofish-rrs-val goofish-rrs-val--warn">{{ rrsStats.pendingOutboundCount }}</strong>
<span class="goofish-rrs-hint-row">待发货且无运单</span>
</div>
</el-card>
</aside>
<el-dialog
title="发货地址比对"
:visible.sync="shipPreviewDialogVisible"
@@ -391,7 +414,7 @@
</template>
<script>
import { listGoofishOrder, listGoofishOrderEventLogs, pullAllGoofishOrders, pullAllGoofishOrdersFull, pullGoofishOrdersFull, refreshGoofishDetail, retryGoofishShip, getGoofishOrder, previewGoofishShip } from '@/api/jarvis/goofish'
import { listGoofishOrder, listGoofishOrderEventLogs, pullAllGoofishOrders, pullAllGoofishOrdersFull, pullGoofishOrdersFull, refreshGoofishDetail, retryGoofishShip, getGoofishOrder, previewGoofishShip, getGoofishRrsLogisticsStats } from '@/api/jarvis/goofish'
import { parseTime } from '@/utils/ruoyi'
/** 与闲管家开放平台 order_status 一致 */
@@ -468,7 +491,13 @@ export default {
/** 发货预览 */
shipPreviewDialogVisible: false,
shipPreviewLoading: false,
shipPreviewVo: {}
shipPreviewVo: {},
/** 日日顺 + 关联京东侧边统计(与后端 selectRrsJdLinkedLogisticsStats 口径一致) */
rrsStatsLoading: false,
rrsStats: {
shippedOutboundCount: 0,
pendingOutboundCount: 0
}
}
},
computed: {
@@ -828,8 +857,24 @@ export default {
listGoofishOrder(this.queryParams).then(res => {
this.list = res.rows
this.total = res.total
}).finally(() => {
this.loading = false
}).catch(() => { this.loading = false })
this.loadRrsStats()
})
},
loadRrsStats() {
this.rrsStatsLoading = true
getGoofishRrsLogisticsStats().then(res => {
const d = (res && res.data) || {}
this.rrsStats = {
shippedOutboundCount: Number(d.shippedOutboundCount) || 0,
pendingOutboundCount: Number(d.pendingOutboundCount) || 0
}
}).catch(() => {
this.rrsStats = { shippedOutboundCount: 0, pendingOutboundCount: 0 }
}).finally(() => {
this.rrsStatsLoading = false
})
},
handleQuery() {
this.queryParams.pageNum = 1
@@ -1076,4 +1121,76 @@ export default {
.waybill-cell--line {
word-break: break-all;
}
/* 左侧列表 + 右侧日日顺物流统计 */
.goofish-order-layout {
display: flex;
align-items: flex-start;
gap: 16px;
flex-wrap: nowrap;
}
.goofish-order-main {
flex: 1;
min-width: 0;
}
.goofish-rrs-aside {
flex: 0 0 216px;
position: sticky;
top: 12px;
align-self: flex-start;
}
.goofish-rrs-card {
font-size: 13px;
}
.goofish-rrs-card ::v-deep .el-card__header {
padding: 12px 14px;
font-weight: 600;
}
.goofish-rrs-card ::v-deep .el-card__body {
padding: 12px 14px 16px;
}
.goofish-rrs-desc {
margin: 0 0 12px;
color: #909399;
font-size: 12px;
line-height: 1.45;
}
.goofish-rrs-metric {
display: flex;
flex-direction: column;
gap: 4px;
}
.goofish-rrs-label {
color: #606266;
font-size: 13px;
}
.goofish-rrs-val {
font-size: 26px;
line-height: 1.15;
}
.goofish-rrs-val--ok {
color: #67c23a;
}
.goofish-rrs-val--warn {
color: #e6a23c;
}
.goofish-rrs-hint-row {
color: #c0c4cc;
font-size: 12px;
line-height: 1.35;
}
.goofish-rrs-divider {
margin: 12px 0;
}
@media (max-width: 1200px) {
.goofish-order-layout {
flex-wrap: wrap;
}
.goofish-rrs-aside {
flex: 1 1 100%;
position: relative;
top: auto;
max-width: 360px;
}
}
</style>