fix: 订单详情支付凭证, 退款
All checks were successful
构建并部署前端到测试环境 / build-and-deploy (push) Successful in 6m34s
All checks were successful
构建并部署前端到测试环境 / build-and-deploy (push) Successful in 6m34s
This commit is contained in:
@@ -26,7 +26,7 @@
|
||||
<ElFormItem label="申请退款金额" prop="requested_refund_amount">
|
||||
<ElInputNumber
|
||||
v-model="formData.requested_refund_amount"
|
||||
:min="0"
|
||||
:min="0.01"
|
||||
:precision="2"
|
||||
:step="1"
|
||||
style="width: 100%"
|
||||
@@ -64,6 +64,7 @@
|
||||
import type { FormInstance, FormRules } from 'element-plus'
|
||||
import { RefundService, OrderService } from '@/api/modules'
|
||||
import type { CreateRefundRequest, Order } from '@/types/api'
|
||||
import { formatMoney, yuanToFen } from '@/utils/business/format'
|
||||
|
||||
interface Props {
|
||||
modelValue: boolean
|
||||
@@ -89,20 +90,21 @@
|
||||
|
||||
const formData = reactive<{
|
||||
order_id: number | null
|
||||
requested_refund_amount: number
|
||||
requested_refund_amount?: number
|
||||
actual_received_amount: number
|
||||
refund_reason: string
|
||||
}>({
|
||||
order_id: null,
|
||||
requested_refund_amount: 0,
|
||||
requested_refund_amount: undefined,
|
||||
actual_received_amount: 0,
|
||||
refund_reason: ''
|
||||
})
|
||||
|
||||
const validateRefundAmount = (rule: any, value: number, callback: any) => {
|
||||
if (value === undefined || value === null) {
|
||||
callback(new Error('请输入申请退款金额'))
|
||||
} else if (value > formData.actual_received_amount) {
|
||||
const requestedRefundAmount = yuanToFen(value) ?? 0
|
||||
if (value === undefined || value === null || value <= 0) {
|
||||
callback(new Error('申请退款金额必须大于0'))
|
||||
} else if (requestedRefundAmount > formData.actual_received_amount) {
|
||||
callback(new Error('申请退款金额不能大于实收金额'))
|
||||
} else {
|
||||
callback()
|
||||
@@ -120,11 +122,9 @@
|
||||
const hasInitialOrder = computed(() => !!props.initialOrderId || !!props.initialOrderNo)
|
||||
|
||||
const selectedOrderActualPaid = computed(() => {
|
||||
if (!formData.order_id) return 0
|
||||
if (!formData.order_id) return '0.00'
|
||||
const selectedOrder = orderSearchOptions.value.find((o) => o.id === formData.order_id)
|
||||
if (!selectedOrder?.actual_paid_amount) return 0
|
||||
const amount = selectedOrder.actual_paid_amount / 100
|
||||
return isNaN(amount) ? 0 : amount
|
||||
return formatMoney(selectedOrder?.actual_paid_amount ?? 0, false)
|
||||
})
|
||||
|
||||
const searchOrders = async (query: string) => {
|
||||
@@ -146,7 +146,7 @@
|
||||
)
|
||||
if (matchedOrder) {
|
||||
formData.order_id = matchedOrder.id
|
||||
formData.actual_received_amount = (matchedOrder.actual_paid_amount || 0) / 100
|
||||
formData.actual_received_amount = matchedOrder.actual_paid_amount ?? 0
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -164,14 +164,14 @@
|
||||
}
|
||||
const selectedOrder = orderSearchOptions.value.find((o) => o.id === orderId)
|
||||
if (selectedOrder) {
|
||||
formData.actual_received_amount = selectedOrder.actual_paid_amount / 100
|
||||
formData.actual_received_amount = selectedOrder.actual_paid_amount ?? 0
|
||||
}
|
||||
}
|
||||
|
||||
const handleDialogClosed = () => {
|
||||
formRef.value?.resetFields()
|
||||
formData.order_id = null
|
||||
formData.requested_refund_amount = 0
|
||||
formData.requested_refund_amount = undefined
|
||||
formData.actual_received_amount = 0
|
||||
formData.refund_reason = ''
|
||||
orderSearchOptions.value = []
|
||||
@@ -186,8 +186,8 @@
|
||||
try {
|
||||
const data: CreateRefundRequest = {
|
||||
order_id: formData.order_id!,
|
||||
requested_refund_amount: formData.requested_refund_amount * 100,
|
||||
actual_received_amount: formData.actual_received_amount * 100,
|
||||
requested_refund_amount: yuanToFen(formData.requested_refund_amount) ?? 0,
|
||||
actual_received_amount: formData.actual_received_amount,
|
||||
refund_reason: formData.refund_reason || undefined
|
||||
}
|
||||
await RefundService.createRefund(data)
|
||||
|
||||
Reference in New Issue
Block a user