feat(order): 结账备注与系统结算信息分开展示,系统结算信息改为逐行明细

- 结账内容写入分隔标记,展示端拆出「结账备注(不参与结算金额)」与「系统结算信息(参与结算金额)」
- 系统结算信息每件消耗品单独一行并给合计,哈夫币/押金各一行;兼容旧数据(同一行用「;」分隔自动拆行并补合计)
- 新增 CheckoutSystemDetail 明细组件,接入订单交接记录、结账明细(PC/移动端)与客服订单详情、聊天侧栏
- 结账提交表单与二次确认补充「备注不参与结算金额」提示
This commit is contained in:
yml2213
2026-10-15 18:14:31 +08:00
parent 93e102b7c0
commit 832a0628c6
13 changed files with 911 additions and 56 deletions
@@ -22,9 +22,11 @@ import {
fetchAdminLatestOrderByListing,
fetchAdminHandoffRecords,
fetchAdminOrder,
splitCheckoutContent,
type HandoffRecord,
type Order,
} from '@/features/orders'
import CheckoutSystemDetail from '@/features/orders/components/CheckoutSystemDetail.vue'
import { fetchAdminPayments, type AdminPayment } from '@/features/admin/api/adminPayments'
import { uploadAdminFile } from '@/shared/api/files'
import ChatAttachmentImage from '@/components/ChatAttachmentImage.vue'
@@ -108,6 +110,8 @@ const activeListingCode = computed(() =>
: '-'
)
const latestHandoffRecord = computed(() => activeHandoffRecords.value[0])
// 交接记录内容含「租客手填备注 + 系统结算信息」,拆分展示避免客服把备注当作结算依据
const latestHandoffParts = computed(() => splitCheckoutContent(latestHandoffRecord.value?.content))
const latestPaymentRecord = computed(() => activePaymentRecords.value[0])
const hasOrderContext = computed(() => Boolean(active.value?.order_id || active.value?.listing_id))
const orderDetailLink = computed(() =>
@@ -894,7 +898,16 @@ function firstQueryValue(value: unknown) {
<h3>交接记录</h3>
<template v-if="latestHandoffRecord">
<strong>{{ formatHandoffRecordType(latestHandoffRecord.type) }}</strong>
<p>{{ latestHandoffRecord.content }}</p>
<template v-if="latestHandoffParts.systemLines.length">
<p v-if="latestHandoffParts.remark" class="handoff-remark">
备注(不参与结算金额):{{ latestHandoffParts.remark }}
</p>
<div class="handoff-system">
<span class="handoff-system-tag">系统结算信息(参与结算金额)</span>
<CheckoutSystemDetail :lines="latestHandoffParts.systemLines" />
</div>
</template>
<p v-else>{{ latestHandoffRecord.content }}</p>
<p>{{ formatDateTime(latestHandoffRecord.created_at) }}</p>
</template>
<p v-else>暂无交接记录</p>