chore: finalize amount migration fixes
This commit is contained in:
Vendored
-1
@@ -47,7 +47,6 @@ declare module 'vue' {
|
||||
ElRadio: typeof import('element-plus/es')['ElRadio']
|
||||
ElRadioButton: typeof import('element-plus/es')['ElRadioButton']
|
||||
ElRadioGroup: typeof import('element-plus/es')['ElRadioGroup']
|
||||
ElSegmented: typeof import('element-plus/es')['ElSegmented']
|
||||
ElSelect: typeof import('element-plus/es')['ElSelect']
|
||||
ElStep: typeof import('element-plus/es')['ElStep']
|
||||
ElSteps: typeof import('element-plus/es')['ElSteps']
|
||||
|
||||
@@ -92,12 +92,14 @@ export function useSettlement(order: Ref<Order | null>) {
|
||||
if (!order.value) return false
|
||||
countering.value = true
|
||||
try {
|
||||
const reasonText = counterForm.value.reason.trim()
|
||||
await counterCheckout(order.value.id, {
|
||||
content: reasonText,
|
||||
consumable_amount: counterForm.value.consumable_amount,
|
||||
coin_consumed_m: counterForm.value.coin_consumed_m,
|
||||
other_amount: counterForm.value.other_amount,
|
||||
deposit_deduct_amount: counterForm.value.deposit_deduct_amount,
|
||||
reason: counterForm.value.reason.trim(),
|
||||
reason: reasonText,
|
||||
evidence_urls: linesToList(counterForm.value.evidenceText),
|
||||
})
|
||||
onSuccess?.()
|
||||
@@ -114,12 +116,14 @@ export function useSettlement(order: Ref<Order | null>) {
|
||||
if (!order.value) return false
|
||||
rejectingCheckout.value = true
|
||||
try {
|
||||
const reasonText = reason.trim()
|
||||
await counterCheckout(order.value.id, {
|
||||
content: reasonText,
|
||||
consumable_amount: 0,
|
||||
coin_consumed_m: 0,
|
||||
other_amount: 0,
|
||||
deposit_deduct_amount: 0,
|
||||
reason: reason.trim(),
|
||||
reason: reasonText,
|
||||
evidence_urls: [],
|
||||
})
|
||||
onSuccess?.()
|
||||
|
||||
@@ -280,12 +280,14 @@ async function handleCounterCheckout() {
|
||||
if (!order.value) return
|
||||
countering.value = true
|
||||
try {
|
||||
const reasonText = counterForm.value.reason.trim()
|
||||
await counterCheckout(order.value.id, {
|
||||
content: reasonText,
|
||||
consumable_amount: counterForm.value.consumable_amount,
|
||||
coin_consumed_m: counterForm.value.coin_consumed_m,
|
||||
other_amount: counterForm.value.other_amount,
|
||||
deposit_deduct_amount: counterForm.value.deposit_deduct_amount,
|
||||
reason: counterForm.value.reason,
|
||||
reason: reasonText,
|
||||
evidence_urls: linesToList(counterForm.value.evidenceText),
|
||||
})
|
||||
showToast({ message: '结账修正已提交,等待租客确认', icon: 'passed' })
|
||||
@@ -980,7 +982,10 @@ async function copyListingCode() {
|
||||
<van-cell
|
||||
title="押金赔付扣除"
|
||||
:value="`¥${money(
|
||||
amountYuan(order.checkout.deposit_deduct_amount_cent, order.checkout.deposit_deduct_amount)
|
||||
amountYuan(
|
||||
order.checkout.deposit_deduct_amount_cent,
|
||||
order.checkout.deposit_deduct_amount
|
||||
)
|
||||
)}`"
|
||||
value-class="red-text"
|
||||
/>
|
||||
|
||||
@@ -364,12 +364,14 @@ async function handleCounterCheckout() {
|
||||
if (!order.value) return
|
||||
countering.value = true
|
||||
try {
|
||||
const reasonText = counterForm.value.reason.trim()
|
||||
await counterCheckout(order.value.id, {
|
||||
content: reasonText,
|
||||
consumable_amount: counterForm.value.consumable_amount,
|
||||
coin_consumed_m: counterForm.value.coin_consumed_m,
|
||||
other_amount: counterForm.value.other_amount,
|
||||
deposit_deduct_amount: counterForm.value.deposit_deduct_amount,
|
||||
reason: counterForm.value.reason,
|
||||
reason: reasonText,
|
||||
evidence_urls: linesToList(counterForm.value.evidenceText),
|
||||
})
|
||||
ElMessage.success('结账修正已提交,等待租客确认')
|
||||
@@ -558,14 +560,18 @@ function checkoutContentWithSummary() {
|
||||
`额外消耗品:${usedResources
|
||||
.map(
|
||||
item =>
|
||||
`${item.label} ${readResourceUsage(item.key)}/${item.quantity}${isChargedResource(item) ? `,金额¥${money(resourceLineAmount(item))}` : ',赠送不扣款'}`
|
||||
`${item.label} ${readResourceUsage(item.key)}/${item.quantity}${
|
||||
isChargedResource(item) ? `,金额¥${money(resourceLineAmount(item))}` : ',赠送不扣款'
|
||||
}`
|
||||
)
|
||||
.join(';')}`
|
||||
)
|
||||
}
|
||||
if (Number(checkoutForm.value.coin_consumed_m || 0) > 0) {
|
||||
lines.push(
|
||||
`哈夫币消耗:${quantity(Number(checkoutForm.value.coin_consumed_m))}M,预计剩余${quantity(remainingHafCoinM.value)}M`
|
||||
`哈夫币消耗:${quantity(Number(checkoutForm.value.coin_consumed_m))}M,预计剩余${quantity(
|
||||
remainingHafCoinM.value
|
||||
)}M`
|
||||
)
|
||||
}
|
||||
if (lines.length === 0) {
|
||||
@@ -617,7 +623,9 @@ function ownerActualIncome(item: Order) {
|
||||
if (item.owner_id !== session.userId) return null
|
||||
const value = item.checkout?.owner_income_amount_cent
|
||||
if (typeof value === 'number') return centToYuan(value)
|
||||
return typeof item.checkout?.owner_income_amount === 'number' ? item.checkout.owner_income_amount : null
|
||||
return typeof item.checkout?.owner_income_amount === 'number'
|
||||
? item.checkout.owner_income_amount
|
||||
: null
|
||||
}
|
||||
|
||||
function quantity(value: unknown) {
|
||||
@@ -637,10 +645,16 @@ function isRecord(value: unknown): value is Record<string, unknown> {
|
||||
function hydrateCounterForm() {
|
||||
if (!order.value?.checkout) return
|
||||
const checkout = order.value.checkout
|
||||
counterForm.value.consumable_amount = amountYuan(checkout.consumable_amount_cent, checkout.consumable_amount)
|
||||
counterForm.value.consumable_amount = amountYuan(
|
||||
checkout.consumable_amount_cent,
|
||||
checkout.consumable_amount
|
||||
)
|
||||
counterForm.value.coin_consumed_m = checkout.coin_consumed_m
|
||||
counterForm.value.other_amount = amountYuan(checkout.other_amount_cent, checkout.other_amount)
|
||||
counterForm.value.deposit_deduct_amount = amountYuan(checkout.deposit_deduct_amount_cent, checkout.deposit_deduct_amount)
|
||||
counterForm.value.deposit_deduct_amount = amountYuan(
|
||||
checkout.deposit_deduct_amount_cent,
|
||||
checkout.deposit_deduct_amount
|
||||
)
|
||||
}
|
||||
|
||||
function linesToList(value: string) {
|
||||
@@ -774,9 +788,15 @@ async function copyListingCode() {
|
||||
</div>
|
||||
<div class="metric-card">
|
||||
<span class="metric-label">押金</span>
|
||||
<strong class="metric-value">¥{{ money(amountYuan(order.deposit_amount_cent, order.deposit_amount)) }}</strong>
|
||||
<span v-if="amountYuan(order.deposit_waived_amount_cent, order.deposit_waived_amount) > 0" class="metric-note"
|
||||
>已免押 ¥{{ money(amountYuan(order.deposit_waived_amount_cent, order.deposit_waived_amount)) }}</span
|
||||
<strong class="metric-value"
|
||||
>¥{{ money(amountYuan(order.deposit_amount_cent, order.deposit_amount)) }}</strong
|
||||
>
|
||||
<span
|
||||
v-if="amountYuan(order.deposit_waived_amount_cent, order.deposit_waived_amount) > 0"
|
||||
class="metric-note"
|
||||
>已免押 ¥{{
|
||||
money(amountYuan(order.deposit_waived_amount_cent, order.deposit_waived_amount))
|
||||
}}</span
|
||||
>
|
||||
</div>
|
||||
</div>
|
||||
@@ -958,32 +978,83 @@ async function copyListingCode() {
|
||||
<div class="checkout-summary-card">
|
||||
<div class="summary-row">
|
||||
<span>实际结算租金</span>
|
||||
<strong>¥{{ money(amountYuan(order.checkout.display_amount_cent, order.checkout.display_amount)) }}</strong>
|
||||
<strong
|
||||
>¥{{
|
||||
money(
|
||||
amountYuan(order.checkout.display_amount_cent, order.checkout.display_amount)
|
||||
)
|
||||
}}</strong
|
||||
>
|
||||
</div>
|
||||
<div class="summary-row">
|
||||
<span>预收押金</span>
|
||||
<strong>
|
||||
¥{{ money(amountYuan(order.checkout.deposit_amount_cent, order.checkout.deposit_amount)) }}
|
||||
<em v-if="amountYuan(order.deposit_waived_amount_cent, order.deposit_waived_amount) > 0"
|
||||
>已免押 ¥{{ money(amountYuan(order.deposit_waived_amount_cent, order.deposit_waived_amount)) }}</em
|
||||
¥{{
|
||||
money(
|
||||
amountYuan(order.checkout.deposit_amount_cent, order.checkout.deposit_amount)
|
||||
)
|
||||
}}
|
||||
<em
|
||||
v-if="
|
||||
amountYuan(order.deposit_waived_amount_cent, order.deposit_waived_amount) > 0
|
||||
"
|
||||
>已免押 ¥{{
|
||||
money(amountYuan(order.deposit_waived_amount_cent, order.deposit_waived_amount))
|
||||
}}</em
|
||||
>
|
||||
</strong>
|
||||
</div>
|
||||
<div class="summary-row">
|
||||
<span>额外消耗品已用</span>
|
||||
<strong class="warning">¥{{ money(amountYuan(order.checkout.consumable_amount_cent, order.checkout.consumable_amount)) }}</strong>
|
||||
<strong class="warning"
|
||||
>¥{{
|
||||
money(
|
||||
amountYuan(
|
||||
order.checkout.consumable_amount_cent,
|
||||
order.checkout.consumable_amount
|
||||
)
|
||||
)
|
||||
}}</strong
|
||||
>
|
||||
</div>
|
||||
<div class="summary-row">
|
||||
<span>押金赔付扣除</span>
|
||||
<strong class="warning">¥{{ money(amountYuan(order.checkout.deposit_deduct_amount_cent, order.checkout.deposit_deduct_amount)) }}</strong>
|
||||
<strong class="warning"
|
||||
>¥{{
|
||||
money(
|
||||
amountYuan(
|
||||
order.checkout.deposit_deduct_amount_cent,
|
||||
order.checkout.deposit_deduct_amount
|
||||
)
|
||||
)
|
||||
}}</strong
|
||||
>
|
||||
</div>
|
||||
<div v-if="isRenter" class="summary-row highlight">
|
||||
<span>退还租客(未使用租金 + 剩余押金)</span>
|
||||
<strong class="amount">¥{{ money(amountYuan(order.checkout.renter_refund_amount_cent, order.checkout.renter_refund_amount)) }}</strong>
|
||||
<strong class="amount"
|
||||
>¥{{
|
||||
money(
|
||||
amountYuan(
|
||||
order.checkout.renter_refund_amount_cent,
|
||||
order.checkout.renter_refund_amount
|
||||
)
|
||||
)
|
||||
}}</strong
|
||||
>
|
||||
</div>
|
||||
<div v-if="isOwner" class="summary-row highlight">
|
||||
<span>号主最终收入(租金 + 押金赔付)</span>
|
||||
<strong class="amount">¥{{ money(amountYuan(order.checkout.owner_income_amount_cent, order.checkout.owner_income_amount)) }}</strong>
|
||||
<strong class="amount"
|
||||
>¥{{
|
||||
money(
|
||||
amountYuan(
|
||||
order.checkout.owner_income_amount_cent,
|
||||
order.checkout.owner_income_amount
|
||||
)
|
||||
)
|
||||
}}</strong
|
||||
>
|
||||
</div>
|
||||
<div v-if="order.checkout.content" class="summary-note">
|
||||
<label>说明:</label>
|
||||
|
||||
Reference in New Issue
Block a user