diff --git a/src/views/pay/refund/RefundModal.vue b/src/views/pay/refund/RefundModal.vue
new file mode 100644
index 00000000..87e6f0a4
--- /dev/null
+++ b/src/views/pay/refund/RefundModal.vue
@@ -0,0 +1,28 @@
+
+
+
+
+
+
diff --git a/src/views/pay/refund/index.vue b/src/views/pay/refund/index.vue
index 3b64cfc4..4be0723c 100644
--- a/src/views/pay/refund/index.vue
+++ b/src/views/pay/refund/index.vue
@@ -1,3 +1,66 @@
- 开发中
+
+
+
+
+ {{ t('action.export') }}
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/pay/refund/refund.data.ts b/src/views/pay/refund/refund.data.ts
new file mode 100644
index 00000000..c86fcd37
--- /dev/null
+++ b/src/views/pay/refund/refund.data.ts
@@ -0,0 +1,327 @@
+import { getMerchantListByName } from '@/api/pay/merchant'
+import { DescItem } from '@/components/Description'
+import { BasicColumn, FormSchema, useRender } from '@/components/Table'
+import { DICT_TYPE, getIntDictOptions } from '@/utils/dict'
+
+export const columns: BasicColumn[] = [
+ {
+ title: '编号',
+ dataIndex: 'id',
+ width: 100
+ },
+ {
+ title: '支付渠道',
+ children: [
+ {
+ title: '商户名称',
+ dataIndex: 'merchantName',
+ width: 120
+ },
+ {
+ title: '应用名称',
+ dataIndex: 'appName',
+ width: 120
+ },
+ {
+ title: '渠道名称',
+ dataIndex: 'channelCodeName',
+ width: 160
+ }
+ ]
+ },
+ {
+ title: '商户订单号',
+ children: [
+ {
+ title: '退款',
+ dataIndex: 'merchantRefundNo',
+ width: 200
+ },
+ {
+ title: '交易',
+ dataIndex: 'merchantOrderId',
+ width: 100
+ }
+ ]
+ },
+ {
+ title: '支付订单号',
+ children: [
+ {
+ title: '交易',
+ dataIndex: 'tradeNo',
+ width: 100
+ },
+ {
+ title: '渠道',
+ dataIndex: 'channelOrderNo',
+ width: 200
+ }
+ ]
+ },
+ {
+ title: '支付金额(元)',
+ dataIndex: 'payAmount',
+ width: 120,
+ customRender: ({ text }) => {
+ return '¥' + parseFloat(text / 100).toFixed(2)
+ }
+ },
+ {
+ title: '退款金额(元)',
+ dataIndex: 'refundAmount',
+ width: 120,
+ customRender: ({ text }) => {
+ return '¥' + parseFloat(text / 100).toFixed(2)
+ }
+ },
+ {
+ title: '退款类型',
+ dataIndex: 'type',
+ width: 100,
+ customRender: ({ text }) => {
+ return useRender.renderDict(text, DICT_TYPE.PAY_REFUND_ORDER_TYPE)
+ }
+ },
+ {
+ title: '退款状态',
+ dataIndex: 'status',
+ width: 100,
+ customRender: ({ text }) => {
+ return useRender.renderDict(text, DICT_TYPE.PAY_REFUND_ORDER_STATUS)
+ }
+ },
+ {
+ title: '回调状态',
+ dataIndex: 'notifyStatus',
+ width: 100,
+ customRender: ({ text }) => {
+ return useRender.renderDict(text, DICT_TYPE.PAY_ORDER_NOTIFY_STATUS)
+ }
+ },
+ {
+ title: '退款原因',
+ dataIndex: 'reason',
+ width: 100
+ },
+ {
+ title: '创建时间',
+ dataIndex: 'createTime',
+ width: 180,
+ customRender: ({ text }) => {
+ return useRender.renderDate(text)
+ }
+ },
+ {
+ title: '退款成功时间',
+ dataIndex: 'successTime',
+ width: 180,
+ customRender: ({ text }) => {
+ return useRender.renderDate(text)
+ }
+ }
+]
+
+export const searchFormSchema: FormSchema[] = [
+ {
+ label: '所属商户',
+ field: 'merchantId',
+ component: 'ApiSelect',
+ componentProps: {
+ api: () => getMerchantListByName('')
+ },
+ colProps: { span: 8 }
+ },
+ {
+ label: '应用编号',
+ field: 'appId',
+ component: 'Input',
+ colProps: { span: 8 }
+ },
+ {
+ label: '渠道编码',
+ field: 'channelCode',
+ component: 'Select',
+ componentProps: {
+ options: getIntDictOptions(DICT_TYPE.PAY_CHANNEL_CODE_TYPE)
+ },
+ colProps: { span: 8 }
+ },
+ {
+ label: '退款类型',
+ field: 'type',
+ component: 'Select',
+ componentProps: {
+ options: getIntDictOptions(DICT_TYPE.PAY_REFUND_ORDER_TYPE)
+ },
+ colProps: { span: 8 }
+ },
+ {
+ label: '商户退款订单号',
+ field: 'merchantRefundNo',
+ component: 'Input',
+ colProps: { span: 8 }
+ },
+ {
+ label: '应用编号',
+ field: 'appId',
+ component: 'Input',
+ colProps: { span: 8 }
+ },
+ {
+ label: '退款状态',
+ field: 'status',
+ component: 'Select',
+ componentProps: {
+ options: getIntDictOptions(DICT_TYPE.PAY_REFUND_ORDER_STATUS)
+ },
+ colProps: { span: 8 }
+ },
+ {
+ label: '退款回调状态',
+ field: 'notifyStatus',
+ component: 'Select',
+ componentProps: {
+ options: getIntDictOptions(DICT_TYPE.PAY_ORDER_NOTIFY_STATUS)
+ },
+ colProps: { span: 8 }
+ },
+ {
+ label: '创建时间',
+ field: 'createTime',
+ component: 'RangePicker',
+ colProps: { span: 8 }
+ }
+]
+
+export const descSchema: DescItem[] = [
+ {
+ label: '商户名称',
+ field: 'merchantName'
+ },
+ {
+ label: '应用名称',
+ field: 'appName'
+ },
+ {
+ label: '商品名称',
+ field: 'subject'
+ },
+ {
+ label: '商户退款单号',
+ field: 'merchantRefundNo',
+ render: (curVal) => {
+ return useRender.renderTag(curVal)
+ }
+ },
+ {
+ label: '商户订单号',
+ field: 'merchantOrderId'
+ },
+ {
+ label: '支付金额',
+ field: 'payAmount',
+ render: (curVal) => {
+ return '¥' + parseFloat(curVal / 100).toFixed(2)
+ }
+ },
+ {
+ label: '退款金额',
+ field: 'refundAmount',
+ render: (curVal) => {
+ return '¥' + parseFloat(curVal / 100).toFixed(2)
+ }
+ },
+ {
+ label: '退款类型',
+ field: 'type',
+ render: (curVal) => {
+ return useRender.renderDict(curVal, DICT_TYPE.PAY_REFUND_ORDER_TYPE)
+ }
+ },
+ {
+ label: '退款状态',
+ field: 'status',
+ render: (curVal) => {
+ return useRender.renderDict(curVal, DICT_TYPE.PAY_REFUND_ORDER_STATUS)
+ }
+ },
+ {
+ label: '创建时间',
+ field: 'createTime',
+ render: (curVal) => {
+ return useRender.renderDate(curVal)
+ }
+ },
+ {
+ label: '退款成功时间',
+ field: 'successTime',
+ render: (curVal) => {
+ return useRender.renderDate(curVal)
+ }
+ },
+ {
+ label: '退款失效时间',
+ field: 'expireTime',
+ render: (curVal) => {
+ return useRender.renderDate(curVal)
+ }
+ },
+ {
+ label: '更新时间',
+ field: 'updateTime',
+ render: (curVal) => {
+ return useRender.renderDate(curVal)
+ }
+ },
+ {
+ label: '支付渠道',
+ field: 'channelCodeName'
+ },
+ {
+ label: '支付IP',
+ field: 'userIp'
+ },
+ {
+ label: '回调地址',
+ field: 'notifyUrl'
+ },
+ {
+ label: '回调状态',
+ field: 'notifyStatus',
+ render: (curVal) => {
+ return useRender.renderDict(curVal, DICT_TYPE.PAY_ORDER_NOTIFY_STATUS)
+ }
+ },
+ {
+ label: '回调时间',
+ field: 'notifyTime',
+ render: (curVal) => {
+ return useRender.renderDate(curVal)
+ }
+ },
+ {
+ label: '渠道订单号',
+ field: 'channelOrderNo'
+ },
+ {
+ label: '渠道退款单号',
+ field: 'channelRefundNo'
+ },
+ {
+ label: '渠道错误码',
+ field: 'channelErrorCode'
+ },
+ {
+ label: '渠道错误码描述',
+ field: 'notifchannelErrorMsgyUrl'
+ },
+ {
+ label: '渠道额外参数',
+ field: 'channelExtras'
+ },
+ {
+ label: '退款原因',
+ field: 'reason'
+ }
+]