This commit is contained in:
Your Name
2026-08-05 11:08:02 +08:00
parent 57a7c415a1
commit c2b7018a22
429 changed files with 13316 additions and 350 deletions
@@ -682,7 +682,7 @@
<!-- 物流轨迹 -->
<el-card
v-if="String(detailData.tracking_number || '').trim()"
v-if="loadRelatedData && String(detailData.tracking_number || '').trim()"
shadow="never"
class="po-panel po-panel-logistics"
:class="
@@ -802,6 +802,7 @@
<!-- 操作日志 -->
<el-card
v-if="loadRelatedData"
v-perms="['tcm.prescriptionOrder/logs']"
shadow="never"
class="po-panel border-gray-100 mt-4"
@@ -1057,11 +1058,17 @@ const props = withDefaults(
gancaoPreviewLoading?: boolean
/** 嵌套在其他抽屉内时需要 append-to-body */
appendToBody?: boolean
/** 自定义详情请求;用于在有独立行级权限边界的页面安全复用抽屉。 */
detailLoader?: (params: { id: number }) => Promise<any>
/** 是否加载原订单页的物流、日志和未关联支付单等附加接口。 */
loadRelatedData?: boolean
}>(),
{
readonly: false,
gancaoPreviewLoading: false,
appendToBody: false
appendToBody: false,
detailLoader: undefined,
loadRelatedData: true
}
)
@@ -1649,6 +1656,10 @@ async function updateJdLogistics() {
}
// ─── 打开 / 刷新 ───
function requestDetail(id: number) {
return props.detailLoader ? props.detailLoader({ id }) : prescriptionOrderDetail({ id })
}
async function open(id: number) {
// 页面级同参数字典请求会取消抽屉挂载时的那次(axios 去重取消),打开时兜底重试
void loadServicePackageOptions()
@@ -1663,22 +1674,22 @@ async function open(id: number) {
detailVisible.value = true
detailLoading.value = true
try {
const res: any = await prescriptionOrderDetail({ id })
const res: any = await requestDetail(id)
const d = res?.data ?? res ?? null
detailData.value = d
if (d) {
detailLogisticsExpress.value = String(d.express_company || 'auto') || 'auto'
const dig = String(d.recipient_phone || '').replace(/\D/g, '')
logisticsTracePhoneTail.value = dig.length >= 4 ? dig : ''
if (String(d.tracking_number || '').trim()) {
if (props.loadRelatedData && String(d.tracking_number || '').trim()) {
fetchLogisticsTrace()
}
fetchLogs(id)
if (props.loadRelatedData) fetchLogs(id)
// 加载未关联的支付单
const diagId = d.diagnosis_id
const linkedIds = d.pay_order_ids || []
if (diagId) {
if (props.loadRelatedData && diagId) {
void loadDetailUnlinkedPayOrders(diagId, id, linkedIds)
}
}
@@ -1695,20 +1706,20 @@ async function refresh() {
const id = Number(detailData.value?.id)
if (!id) return
try {
const res: any = await prescriptionOrderDetail({ id })
const res: any = await requestDetail(id)
const d = res?.data ?? res ?? null
if (!d) return
const prevTracking = String(detailData.value?.tracking_number || '').trim()
detailData.value = d
const nextTracking = String(d.tracking_number || '').trim()
if (nextTracking && nextTracking !== prevTracking) {
if (props.loadRelatedData && nextTracking && nextTracking !== prevTracking) {
bumpLogisticsTraceRequestToken()
detailLogisticsExpress.value = String(d.express_company || 'auto') || 'auto'
void fetchLogisticsTrace()
}
void fetchLogs(id)
if (props.loadRelatedData) void fetchLogs(id)
const diagId = d.diagnosis_id
if (diagId) {
if (props.loadRelatedData && diagId) {
void loadDetailUnlinkedPayOrders(diagId, id, d.pay_order_ids || [])
}
} catch {
@@ -168,7 +168,7 @@
{{ listStats.periodLine }}
</p>
<!-- <p class="relative mt-1.5 text-xs text-slate-400 leading-relaxed">
业绩 = 除业务订单已取消(4)关联支付金额下方为合计与已取消明细
业绩 = 除业务订单已取消(4)拒收(9)退款(10)后的关联支付金额下方为合计与排除项明细
</p> -->
</div>
</div>
@@ -2920,7 +2920,7 @@ const listStats = computed(() => {
const oC = hasOrderSplit ? n(ex?.stats_order_amount_cancelled) : 0
const pNc = hasPaySplit ? n(ex?.stats_linked_pay_amount_not_cancelled) : n(pay)
const pC = hasPaySplit ? n(ex?.stats_linked_pay_amount_cancelled) : 0
// 业绩 = 除履约已取消(fulfillment_status=4)外的全部订单金额;优先用后端显式字段,兜底到 not_cancelled
// 业绩 = 除履约已取消(4)、拒收(9)、退款(10)后的订单金额;优先用后端显式字段,兜底到 not_cancelled
const oPerf = ex?.stats_order_amount_performance !== undefined
? n(ex?.stats_order_amount_performance)
: oNc
@@ -2960,7 +2960,7 @@ const listStats = computed(() => {
payHeading: `${headPrefix}业绩(关联实付)`,
periodLine,
scopeHint,
orderSplitHint: '业绩 = 除履约已取消(4)外全部订单金额;下方为合计与已取消明细'
orderSplitHint: '业绩 = 除履约已取消(4)、拒收(9)、退款(10)后的订单金额;下方为合计与排除项明细'
}
})