实现结账流程:替换旧归还逻辑为完整结账-修正-争议流程

- 新增 order_checkouts 表,支持结账明细(消耗/押金扣除/退回/号主入账)
- 租客发起结账 → 号主确认 → 已完成(正常路径)
- 号主修改结账 → 租客确认修正 → 已完成(修正路径)
- 结账阶段任一方发起争议 → 后台仲裁 → 已完成/已关闭/异常(争议路径)
- 争议模块适配结账争议类型,仲裁结果新增 mark_abnormal
- 超时任务适配新的 pending_checkout_confirm 状态
- 前端结账明细面板、发起结账/确认/修正/拒绝表单全部实现
- 移除旧的 SubmitReturn/ConfirmReturn 接口
This commit is contained in:
yml2213
2026-05-24 02:17:36 +08:00
parent 25e5599e0a
commit 3631e70321
29 changed files with 991 additions and 197 deletions
@@ -96,8 +96,8 @@ function actionType(action: string) {
<el-option label="订单标记异常" value="order.mark_abnormal" />
<el-option label="号主交接超时" value="order.timeout.owner_submit" />
<el-option label="租客确认超时" value="order.timeout.renter_confirm" />
<el-option label="租客归还逾期" value="order.timeout.return_overdue" />
<el-option label="号主确认归还超时" value="order.timeout.owner_return_confirm" />
<el-option label="租客结账逾期" value="order.timeout.return_overdue" />
<el-option label="号主确认结账超时" value="order.timeout.owner_checkout_confirm" />
<el-option label="申诉仲裁" value="dispute.arbitrate" />
<el-option label="更新系统配置" value="system_config.update" />
<el-option label="创建系统配置" value="system_config.create" />
@@ -86,7 +86,7 @@ function money(value?: number) {
<strong>{{ dashboard.pending.pending_handoffs }}</strong>
</div>
<div class="pending-row">
<span>归还确认</span>
<span>结账确认</span>
<strong>{{ dashboard.pending.pending_return_confirms }}</strong>
</div>
</div>
@@ -99,7 +99,7 @@ function readError(error: unknown, fallback: string) {
<div class="page-header">
<p class="eyebrow">Arbitration</p>
<h1>仲裁中心</h1>
<p>处理无法登录资产损失哈夫币争议和超时归还</p>
<p>处理无法登录资产损失哈夫币争议和结账争议</p>
</div>
<el-table v-loading="loading" class="table-panel" :data="disputes">
@@ -134,6 +134,7 @@ function readError(error: unknown, fallback: string) {
<el-option label="释放押金" value="release_deposit" />
<el-option label="赔付号主" value="compensate_owner" />
<el-option label="关闭订单" value="order_close" />
<el-option label="标记异常" value="mark_abnormal" />
</el-select>
<el-input-number
v-if="['partial_refund', 'deduct_deposit', 'compensate_owner'].includes(result)"
@@ -121,6 +121,20 @@ function readError(error: unknown, fallback: string) {
</div>
</div>
<div v-if="order?.checkout" class="order-panel dashboard-panel">
<h2>结账信息</h2>
<div class="detail-grid checkout-grid">
<p>结账状态{{ order.checkout.status }}</p>
<p>租金收入¥{{ order.checkout.rent_amount }}</p>
<p>押金¥{{ order.checkout.deposit_amount }}</p>
<p>消耗扣款¥{{ order.checkout.deposit_deduct_amount }}</p>
<p>租客退回¥{{ order.checkout.renter_refund_amount }}</p>
<p>号主入账¥{{ order.checkout.owner_income_amount }}</p>
</div>
<p v-if="order.checkout.content">租客说明{{ order.checkout.content }}</p>
<p v-if="order.checkout.owner_adjustment_reason">号主修正{{ order.checkout.owner_adjustment_reason }}</p>
</div>
<div v-if="order" class="order-panel dashboard-panel code-panel">
<h2>账号快照</h2>
<pre>{{ snapshotText }}</pre>
+4 -1
View File
@@ -39,7 +39,10 @@ async function loadOrders() {
<el-option label="待交接" value="pending_handoff" />
<el-option label="使用中" value="renting" />
<el-option label="逾期中" value="overdue" />
<el-option label="待归还确认" value="pending_return_confirm" />
<el-option label="待结账确认" value="pending_return_confirm" />
<el-option label="待号主确认结账" value="pending_checkout_confirm" />
<el-option label="待租客确认修正" value="pending_checkout_accept" />
<el-option label="结账争议中" value="checkout_disputing" />
<el-option label="申诉中" value="disputing" />
<el-option label="异常" value="abnormal" />
<el-option label="已完成" value="completed" />