diff --git a/apps/web-antd/src/views/pay/refund/data.ts b/apps/web-antd/src/views/pay/refund/data.ts index d16a5755a..69eee7224 100644 --- a/apps/web-antd/src/views/pay/refund/data.ts +++ b/apps/web-antd/src/views/pay/refund/data.ts @@ -206,16 +206,20 @@ export function useDetailSchema(): DescriptionItemSchema[] { field: 'payPrice', label: '支付金额', content: (data: PayRefundApi.Refund) => - h(Tag, { color: 'success' }, () => - `¥${erpPriceInputFormatter(data?.payPrice || 0)}` + h( + Tag, + { color: 'success' }, + () => `¥${erpPriceInputFormatter(data?.payPrice || 0)}`, ), }, { field: 'refundPrice', label: '退款金额', content: (data: PayRefundApi.Refund) => - h(Tag, { color: 'danger' }, () => - `¥${erpPriceInputFormatter(data?.refundPrice || 0)}` + h( + Tag, + { color: 'danger' }, + () => `¥${erpPriceInputFormatter(data?.refundPrice || 0)}`, ), }, { diff --git a/apps/web-antd/src/views/pay/refund/modules/detail.vue b/apps/web-antd/src/views/pay/refund/modules/detail.vue index 1f739575e..1617b1d60 100644 --- a/apps/web-antd/src/views/pay/refund/modules/detail.vue +++ b/apps/web-antd/src/views/pay/refund/modules/detail.vue @@ -41,6 +41,7 @@ const [Modal, modalApi] = useVbenModal({ }, }); + { - const data = await getAppList(); - return data.map((item) => ({ - label: item.name, - value: item.id, - })); - }, - autoSelect: 'first', - placeholder: '请选择数据源', + allowClear: true, + placeholder: '请输入应用编号', }, }, { @@ -40,35 +32,53 @@ export function useGridFormSchema(): VbenFormSchema[] { component: 'Select', componentProps: { clearable: true, + placeholder: '请选择退款渠道', options: getDictOptions(DICT_TYPE.PAY_CHANNEL_CODE, 'string'), }, }, { fieldName: 'merchantOrderId', - label: '商户支付单号', + label: '商户单号', component: 'Input', + componentProps: { + allowClear: true, + placeholder: '请输入商户单号', + }, }, { fieldName: 'merchantRefundId', - label: '商户退款单号', + label: '退款单号', component: 'Input', + componentProps: { + allowClear: true, + placeholder: '请输入退款单号', + }, }, { fieldName: 'channelOrderNo', - label: '渠道支付单号', + label: '渠道单号', component: 'Input', + componentProps: { + allowClear: true, + placeholder: '请输入渠道单号', + }, }, { fieldName: 'channelRefundNo', label: '渠道退款单号', component: 'Input', + componentProps: { + allowClear: true, + placeholder: '请输入渠道退款单号', + }, }, { fieldName: 'status', label: '退款状态', component: 'Select', componentProps: { - clearable: true, + allowClear: true, + placeholder: '请选择退款状态', options: getDictOptions(DICT_TYPE.PAY_REFUND_STATUS, 'number'), }, }, @@ -78,7 +88,7 @@ export function useGridFormSchema(): VbenFormSchema[] { component: 'RangePicker', componentProps: { ...getRangePickerDefaultProps(), - clearable: true, + allowClear: true, }, }, ]; @@ -90,81 +100,99 @@ export function useGridColumns(): VxeTableGridOptions['columns'] { { field: 'id', title: '编号', - }, - { - field: 'merchantRefundId', - title: '退款订单号', - }, - { - field: 'channelRefundNo', - title: '渠道退款单号', + minWidth: 100, }, { field: 'payPrice', title: '支付金额', - formatter: 'formatFenToYuanAmount', + minWidth: 120, + formatter: 'formatAmount2', }, { field: 'refundPrice', title: '退款金额', - formatter: 'formatFenToYuanAmount', + minWidth: 120, + formatter: 'formatAmount2', + }, + { + field: 'merchantRefundId', + title: '退款单号', + minWidth: 240, + slots: { + default: 'no', + }, }, { field: 'status', title: '退款状态', + minWidth: 120, cellRender: { name: 'CellDict', props: { type: DICT_TYPE.PAY_REFUND_STATUS }, }, }, { - field: 'createTime', - title: '创建时间', + field: 'channelCode', + title: '退款渠道', + minWidth: 120, + cellRender: { + name: 'CellDict', + props: { type: DICT_TYPE.PAY_CHANNEL_CODE }, + }, + }, + { + field: 'successTime', + title: '退款时间', + minWidth: 180, formatter: 'formatDateTime', }, + { + field: 'createTime', + title: '创建时间', + minWidth: 180, + formatter: 'formatDateTime', + }, + { + field: 'reason', + title: '退款原因', + minWidth: 200, + }, { title: '操作', - width: 100, + width: 80, fixed: 'right', slots: { default: 'actions' }, }, ]; } -/** 详情页的字段 */ -export function useBaseDetailSchema(): DescriptionItemSchema[] { +/** 详情的字段 */ +export function useDetailSchema(): DescriptionItemSchema[] { return [ + // 基本信息部分 { field: 'merchantRefundId', label: '商户退款单号', - content: (data) => - h(ElTag, {}, () => { - return data?.merchantRefundId || '-'; - }), + content: (data: PayRefundApi.Refund) => + h(ElTag, {}, () => data?.merchantRefundId || '-'), }, { field: 'channelRefundNo', label: '渠道退款单号', - content: (data) => - h(ElTag, {}, () => { - return data?.channelRefundNo || '-'; - }), + content: (data: PayRefundApi.Refund) => + h(ElTag, { type: 'success' }, () => data?.channelRefundNo || '-'), }, { field: 'merchantOrderId', label: '商户支付单号', - content: (data) => - h(ElTag, {}, () => { - return data?.merchantOrderId || '-'; - }), + content: (data: PayRefundApi.Refund) => + h(ElTag, {}, () => data?.merchantOrderId || '-'), }, { field: 'channelOrderNo', label: '渠道支付单号', - content: (data) => - h(ElTag, {}, () => { - return data?.channelOrderNo || '-'; - }), + content: (data: PayRefundApi.Refund) => + h(ElTag, { type: 'success' }, () => data?.channelOrderNo || '-'), }, { field: 'appId', @@ -177,23 +205,27 @@ export function useBaseDetailSchema(): DescriptionItemSchema[] { { field: 'payPrice', label: '支付金额', - content: (data) => - h(ElTag, { color: 'success' }, () => { - return fenToYuan(data.payPrice || 0); - }), + content: (data: PayRefundApi.Refund) => + h( + ElTag, + { type: 'success' }, + () => `¥${erpPriceInputFormatter(data?.payPrice || 0)}`, + ), }, { field: 'refundPrice', label: '退款金额', - content: (data) => - h(ElTag, { color: 'red' }, () => { - return fenToYuan(data.refundPrice || 0); - }), + content: (data: PayRefundApi.Refund) => + h( + ElTag, + { type: 'danger' }, + () => `¥${erpPriceInputFormatter(data?.refundPrice || 0)}`, + ), }, { field: 'status', label: '退款状态', - content: (data) => + content: (data: any) => h(DictTag, { type: DICT_TYPE.PAY_REFUND_STATUS, value: data?.status, @@ -202,28 +234,26 @@ export function useBaseDetailSchema(): DescriptionItemSchema[] { { field: 'successTime', label: '退款时间', - content: (data) => formatDateTime(data.successTime) as string, + content: (data: PayRefundApi.Refund) => + formatDateTime(data?.successTime) as string, }, { field: 'createTime', label: '创建时间', - content: (data) => formatDateTime(data.createTime) as string, + content: (data: PayRefundApi.Refund) => + formatDateTime(data?.createTime) as string, }, { field: 'updateTime', label: '更新时间', - content: (data) => formatDateTime(data.updateTime) as string, + content: (data: PayRefundApi.Refund) => + formatDateTime(data?.updateTime) as string, }, - ]; -} - -/** 详情页的字段 */ -export function useChannelDetailSchema(): DescriptionItemSchema[] { - return [ + // 渠道信息部分 { field: 'channelCode', label: '退款渠道', - content: (data) => + content: (data: PayRefundApi.Refund) => h(DictTag, { type: DICT_TYPE.PAY_CHANNEL_CODE, value: data?.channelCode, @@ -241,6 +271,7 @@ export function useChannelDetailSchema(): DescriptionItemSchema[] { field: 'notifyUrl', label: '通知 URL', }, + // 错误信息部分 { field: 'channelErrorCode', label: '渠道错误码', diff --git a/apps/web-ele/src/views/pay/refund/index.vue b/apps/web-ele/src/views/pay/refund/index.vue index 0f6bad3c3..015fbda66 100644 --- a/apps/web-ele/src/views/pay/refund/index.vue +++ b/apps/web-ele/src/views/pay/refund/index.vue @@ -1,35 +1,31 @@ @@ -69,21 +69,8 @@ const [Grid, gridApi] = useVbenVxeGrid({ url="https://doc.iocoder.cn/pay/refund-demo/" /> - + - - - + + + + 商户 {{ row.merchantOrderId }} + + + 退款 + {{ row.merchantRefundId }} + + + 渠道 + {{ row.channelRefundNo }} + + + diff --git a/apps/web-ele/src/views/pay/refund/modules/detail.vue b/apps/web-ele/src/views/pay/refund/modules/detail.vue index 226d7bf3b..1f3e380cb 100644 --- a/apps/web-ele/src/views/pay/refund/modules/detail.vue +++ b/apps/web-ele/src/views/pay/refund/modules/detail.vue @@ -5,37 +5,23 @@ import { ref } from 'vue'; import { useVbenModal } from '@vben/common-ui'; -import { ElDivider } from 'element-plus'; - import { getRefund } from '#/api/pay/refund'; import { useDescription } from '#/components/description'; -import { useBaseDetailSchema, useChannelDetailSchema } from '../data'; +import { useDetailSchema } from '../data'; const formData = ref(); -const [BaseDescription] = useDescription({ +const [Descriptions] = useDescription({ componentProps: { - border: false, + border: true, column: 2, direction: 'horizontal', + labelWidth: 140, title: '', - labelWidth: 200, extra: '', }, - schema: useBaseDetailSchema(), -}); - -const [ChannelDescription] = useDescription({ - componentProps: { - border: false, - column: 2, - direction: 'horizontal', - title: '', - labelWidth: 200, - extra: '', - }, - schema: useChannelDetailSchema(), + schema: useDetailSchema(), }); const [Modal, modalApi] = useVbenModal({ @@ -66,8 +52,6 @@ const [Modal, modalApi] = useVbenModal({ :show-cancel-button="false" :show-confirm-button="false" > - - - +
+ 商户 {{ row.merchantOrderId }} +
+ 退款 + {{ row.merchantRefundId }} +
+ 渠道 + {{ row.channelRefundNo }} +