feat 各类订单和记录交互调整

This commit is contained in:
xxm1995
2024-01-29 16:10:42 +08:00
parent d7836922ce
commit c1c5211725
10 changed files with 69 additions and 15 deletions

View File

@@ -83,10 +83,10 @@ export interface PayOrder extends BaseEntity {
title?: string
// 是否是异步支付
asyncPay?: boolean
// 是否是组合支付
combinationPay?: boolean
// 异步支付通道
asyncChannel?: boolean
// 是否是组合支付
combinationPay?: boolean
// 关联网关支付号
gatewayOrderNo?: number
// 金额

View File

@@ -11,7 +11,7 @@
<a-form ref="formRef" :model="form" :label-col="labelCol" :wrapper-col="wrapperCol">
<template :key="o.channel" v-for="o in form.refundChannels">
<a-form-item :label="dictConvert('PayChannel', o.channel)" name="name">
<a-input-number :min="1" :max="o.maxAmount" :precision="0" v-model:value="o.amount" />
<a-input-number :min="0" :max="o.maxAmount" :precision="0" v-model:value="o.amount" />
</a-form-item>
</template>
<a-form-item label="原因" name="reason">

View File

@@ -18,20 +18,19 @@
<a-descriptions-item label="本地订单ID">
{{ form.paymentId }}
</a-descriptions-item>
<a-descriptions-item label="本地退款ID">
<a-descriptions-item label="本地退款ID" v-if="form.refundId">
{{ form.refundId }}
</a-descriptions-item>
<a-descriptions-item label="网关订单号">
{{ form.gatewayOrderNo }}
</a-descriptions-item>
<a-descriptions-item label="交易类型">
<a-tag>{{ dictConvert('PayReconcileTrade', form.repairType) }}</a-tag>
<a-tag>{{ dictConvert('PayReconcileTrade', form.type) }}</a-tag>
</a-descriptions-item>
<a-descriptions-item label="创建时间">
{{ form.createTime }}
</a-descriptions-item>
</a-descriptions>
<template #footer>
<a-space>
<a-button key="cancel" @click="handleCancel">取消</a-button>

View File

@@ -11,7 +11,7 @@
<vxe-column field="gatewayOrderNo" title="网关订单号" />
<vxe-column field="repairType" title="交易类型">
<template #default="{ row }">
<a-tag>{{ dictConvert('PayReconcileTrade', row.repairType) }}</a-tag>
<a-tag>{{ dictConvert('PayReconcileTrade', row.type) }}</a-tag>
</template>
</vxe-column>
<vxe-column field="createTime" title="创建时间" />

View File

@@ -21,6 +21,9 @@
<a-descriptions-item label="退款通道">
{{ form.gatewayOrderNo }}
</a-descriptions-item>
<a-descriptions-item label="状态">
<a-tag>{{ dictConvert('PayRefundStatus', form.status) }}</a-tag>
</a-descriptions-item>
</a-descriptions>
<template #footer>

View File

@@ -10,6 +10,11 @@
</vxe-column>
<vxe-column field="orderAmount" title="订单金额" />
<vxe-column field="amount" title="退款金额" />
<vxe-column field="refundStatus" title="状态">
<template #default="{ row }">
<a-tag>{{ dictConvert('PayRefundStatus', row.status) }}</a-tag>
</template>
</vxe-column>
<vxe-column field="payChannelId" title="通道支付单ID" />
<vxe-column fixed="right" width="60" :showOverflow="false" title="操作">
<template #default="{ row }">

View File

@@ -52,6 +52,16 @@ export function refund(params) {
})
}
/**
* 退款信息同步
*/
export function syncById(id) {
return defHttp.post<Result<void>>({
url: '/order/refund/syncById',
params: { id },
})
}
/**
* 退款记录
*/
@@ -64,6 +74,10 @@ export interface RefundOrder extends BaseEntity {
refundNo?: string
// 网关订单号
gatewayOrderNo?: string
// 是否是异步支付
asyncPay?: boolean
// 异步支付通道
asyncChannel?: boolean
// 标题
title?: string
// 金额
@@ -100,6 +114,8 @@ export interface RefundChannelOrder extends BaseEntity {
orderAmount?: number
// 退款金额
amount?: number
// 状态
status?: string
}
/**

View File

@@ -33,18 +33,27 @@
<vxe-column field="title" title="原支付标题" />
<vxe-column field="amount" title="退款金额" sortable />
<vxe-column field="refundableBalance" title="剩余可退金额" sortable />
<vxe-column field="gatewayOrderNo" title="网关订单号" :visible="false" />
<vxe-column field="async" title="包含异步通道">
<template #default="{ row }">
<a-tag color="green">{{ row.asyncPay ? '是' : '否' }}</a-tag>
</template>
</vxe-column>
<vxe-column field="gatewayOrderNo" title="支付网关订单号" :visible="false" />
<vxe-column field="refundTime" title="退款时间" sortable />
<vxe-column field="refundStatus" title="状态">
<template #default="{ row }">
<a-tag>{{ dictConvert('PayRefundStatus', row.status) }}</a-tag>
</template>
</vxe-column>
<vxe-column fixed="right" width="140" :showOverflow="false" title="操作">
<vxe-column field="errorMsg" title="提示信息" />
<vxe-column fixed="right" width="180" :showOverflow="false" title="操作">
<template #default="{ row }">
<a-link @click="show(row)">查看</a-link>
<a-divider type="vertical" />
<a-link @click="showChannel(row)">通道订单</a-link>
<a-divider type="vertical" />
<!-- 只有退款中的异步订单才可以同步 -->
<a-link :disabled="!row.asyncPay || !row.status === 'progress'" @click="sync(row)">同步</a-link>
</template>
</vxe-column>
</vxe-table>
@@ -66,7 +75,7 @@
<script lang="ts" setup>
import { computed, onMounted } from 'vue'
import { $ref } from 'vue/macros'
import { page } from './RefundOrder.api'
import { page, syncById } from './RefundOrder.api'
import useTablePage from '/@/hooks/bootx/useTablePage'
import RefundOrderInfo from './RefundOrderInfo.vue'
import { VxeTable, VxeTableInstance, VxeToolbarInstance } from 'vxe-table'
@@ -142,6 +151,27 @@
})
return Promise.resolve()
}
/**
* 退款信息同步
*/
function sync(record) {
createConfirm({
iconType: 'warning',
title: '警告',
content: '是否同步退款信息',
onOk: () => {
loading.value = true
syncById(record.id).then(({ data }) => {
// TODO 后期可以根据返回结果进行相应的处理
createMessage.success('同步成功')
console.log(data)
queryPage()
})
},
})
}
/**
* 查看
*/

View File

@@ -22,14 +22,14 @@
<a-descriptions-item label="本地业务号">
{{ form.orderNo }}
</a-descriptions-item>
<a-descriptions-item label="支付">
{{ dictConvert('PayRepairSource', form.repairSource) }}
<a-descriptions-item label="修复类型">
{{ dictConvert('PayRepairType', form.repairType) }}
</a-descriptions-item>
<a-descriptions-item label="修复来源">
{{ dictConvert('PayRepairSource', form.repairSource) }}
</a-descriptions-item>
<a-descriptions-item label="修复方式">
{{ dictConvert('PayRepairType', form.repairWay) }}
{{ dictConvert('PayRepairWay', form.repairWay) }}
</a-descriptions-item>
<a-descriptions-item label="修复通道">
{{ dictConvert('AsyncPayChannel', form.asyncChannel) }}

View File

@@ -33,9 +33,9 @@
<a-tag>{{ dictConvert('PayRepairType', row.repairType) }}</a-tag>
</template>
</vxe-column>
<vxe-column field="repairType" title="修复方式">
<vxe-column field="repairWay" title="修复方式">
<template #default="{ row }">
<a-tag>{{ dictConvert('PayRepairWay', row.repairType) || dictConvert('RefundRepairWay', row.repairType) }}</a-tag>
<a-tag>{{ dictConvert('PayRepairWay', row.repairWay) || dictConvert('RefundRepairWay', row.repairWay) }}</a-tag>
</template>
</vxe-column>
<vxe-column field="createTime" title="修复时间" />
@@ -172,6 +172,7 @@
* 查看订单单信息
*/
function showOrder(record: PayRepairRecord) {
console.log(record)
if (record.repairType === 'pay') {
payOrderInfo.init(record.orderId)
} else {