|
@@ -10,21 +10,6 @@
|
|
|
:inline="true"
|
|
|
label-width="120px"
|
|
|
>
|
|
|
- <el-form-item label="所属商户" prop="merchantId">
|
|
|
- <el-select
|
|
|
- v-model="queryParams.merchantId"
|
|
|
- clearable
|
|
|
- placeholder="请选择所属商户"
|
|
|
- class="!w-240px"
|
|
|
- >
|
|
|
- <el-option
|
|
|
- v-for="item in merchantList"
|
|
|
- :key="item.id"
|
|
|
- :label="item.name"
|
|
|
- :value="item.id"
|
|
|
- />
|
|
|
- </el-select>
|
|
|
- </el-form-item>
|
|
|
<el-form-item label="应用编号" prop="appId">
|
|
|
<el-select
|
|
|
v-model="queryParams.appId"
|
|
@@ -35,69 +20,66 @@
|
|
|
<el-option v-for="item in appList" :key="item.id" :label="item.name" :value="item.id" />
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
|
- <el-form-item label="渠道编码" prop="channelCode">
|
|
|
+ <el-form-item label="退款渠道" prop="channelCode">
|
|
|
<el-select
|
|
|
v-model="queryParams.channelCode"
|
|
|
- placeholder="请输入渠道编码"
|
|
|
+ placeholder="请选择退款渠道"
|
|
|
clearable
|
|
|
class="!w-240px"
|
|
|
>
|
|
|
<el-option
|
|
|
- v-for="dict in getStrDictOptions(DICT_TYPE.PAY_CHANNEL_CODE_TYPE)"
|
|
|
+ v-for="dict in getStrDictOptions(DICT_TYPE.PAY_CHANNEL_CODE)"
|
|
|
:key="dict.value"
|
|
|
:label="dict.label"
|
|
|
:value="dict.value"
|
|
|
/>
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
|
- <el-form-item label="退款类型" prop="type">
|
|
|
- <el-select
|
|
|
- v-model="queryParams.type"
|
|
|
- placeholder="请选择退款类型"
|
|
|
+ <el-form-item label="商户支付单号" prop="merchantOrderId">
|
|
|
+ <el-input
|
|
|
+ v-model="queryParams.merchantOrderId"
|
|
|
+ placeholder="请输入商户支付单号"
|
|
|
clearable
|
|
|
+ @keyup.enter="handleQuery"
|
|
|
class="!w-240px"
|
|
|
- >
|
|
|
- <el-option
|
|
|
- v-for="dict in getIntDictOptions(DICT_TYPE.PAY_REFUND_ORDER_TYPE)"
|
|
|
- :key="dict.value"
|
|
|
- :label="dict.label"
|
|
|
- :value="dict.value"
|
|
|
- />
|
|
|
- </el-select>
|
|
|
+ />
|
|
|
</el-form-item>
|
|
|
- <el-form-item label="商户退款订单号" prop="merchantRefundNo">
|
|
|
+ <el-form-item label="商户退款单号" prop="merchantRefundId">
|
|
|
<el-input
|
|
|
- v-model="queryParams.merchantRefundNo"
|
|
|
- placeholder="请输入商户退款订单号"
|
|
|
+ v-model="queryParams.merchantRefundId"
|
|
|
+ placeholder="请输入商户退款单号"
|
|
|
clearable
|
|
|
@keyup.enter="handleQuery"
|
|
|
class="!w-240px"
|
|
|
/>
|
|
|
</el-form-item>
|
|
|
- <el-form-item label="退款状态" prop="status">
|
|
|
- <el-select
|
|
|
- v-model="queryParams.status"
|
|
|
- placeholder="请选择退款状态"
|
|
|
+ <el-form-item label="渠道支付单号" prop="channelOrderNo">
|
|
|
+ <el-input
|
|
|
+ v-model="queryParams.channelOrderNo"
|
|
|
+ placeholder="请输入渠道支付单号"
|
|
|
clearable
|
|
|
+ @keyup.enter="handleQuery"
|
|
|
class="!w-240px"
|
|
|
- >
|
|
|
- <el-option
|
|
|
- v-for="dict in getIntDictOptions(DICT_TYPE.PAY_REFUND_ORDER_STATUS)"
|
|
|
- :key="dict.value"
|
|
|
- :label="dict.label"
|
|
|
- :value="dict.value"
|
|
|
- />
|
|
|
- </el-select>
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="渠道退款单号" prop="channelRefundNo">
|
|
|
+ <el-input
|
|
|
+ v-model="queryParams.channelRefundNo"
|
|
|
+ placeholder="请输入渠道退款单号"
|
|
|
+ clearable
|
|
|
+ @keyup.enter="handleQuery"
|
|
|
+ class="!w-240px"
|
|
|
+ />
|
|
|
</el-form-item>
|
|
|
- <el-form-item label="退款回调状态" prop="notifyStatus">
|
|
|
+ <el-form-item label="退款状态" prop="status">
|
|
|
<el-select
|
|
|
- v-model="queryParams.notifyStatus"
|
|
|
- placeholder="请选择通知商户退款结果的回调状态"
|
|
|
+ v-model="queryParams.status"
|
|
|
+ placeholder="请选择退款状态"
|
|
|
clearable
|
|
|
class="!w-240px"
|
|
|
>
|
|
|
<el-option
|
|
|
- v-for="dict in getIntDictOptions(DICT_TYPE.PAY_ORDER_NOTIFY_STATUS)"
|
|
|
+ v-for="dict in getIntDictOptions(DICT_TYPE.PAY_REFUND_STATUS)"
|
|
|
:key="dict.value"
|
|
|
:label="dict.label"
|
|
|
:value="dict.value"
|
|
@@ -116,8 +98,8 @@
|
|
|
/>
|
|
|
</el-form-item>
|
|
|
<el-form-item>
|
|
|
- <el-button @click="handleQuery"><Icon icon="ep:search" class="mr-5px" /> 搜索</el-button>
|
|
|
- <el-button @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" /> 重置</el-button>
|
|
|
+ <el-button @click="handleQuery"> <Icon icon="ep:search" class="mr-5px" /> 搜索 </el-button>
|
|
|
+ <el-button @click="resetQuery"> <Icon icon="ep:refresh" class="mr-5px" /> 重置 </el-button>
|
|
|
<el-button
|
|
|
type="success"
|
|
|
plain
|
|
@@ -131,84 +113,72 @@
|
|
|
</el-form>
|
|
|
</ContentWrap>
|
|
|
|
|
|
+ <!-- 列表 -->
|
|
|
<ContentWrap>
|
|
|
<el-table v-loading="loading" :data="list">
|
|
|
<el-table-column label="编号" align="center" prop="id" />
|
|
|
- <el-table-column label="商户名称" align="center" prop="merchantName" width="120" />
|
|
|
- <el-table-column label="应用名称" align="center" prop="appName" width="120" />
|
|
|
- <el-table-column label="渠道名称" align="center" prop="channelCodeName" width="120" />
|
|
|
- <el-table-column label="交易订单号" align="center" prop="tradeNo" width="140" />
|
|
|
- <el-table-column label="商户订单编号" align="center" prop="merchantOrderId" width="140" />
|
|
|
- <el-table-column label="商户订单号" align="left" width="230">
|
|
|
+ <el-table-column
|
|
|
+ label="创建时间"
|
|
|
+ align="center"
|
|
|
+ prop="createTime"
|
|
|
+ width="180"
|
|
|
+ :formatter="dateFormatter"
|
|
|
+ />
|
|
|
+ <el-table-column label="支付金额" align="center" prop="payPrice" width="100">
|
|
|
+ <template #default="scope">
|
|
|
+ ¥{{ parseFloat(scope.row.payPrice / 100).toFixed(2) }}
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column label="退款金额" align="center" prop="refundPrice" width="100">
|
|
|
+ <template #default="scope">
|
|
|
+ ¥{{ parseFloat(scope.row.refundPrice / 100).toFixed(2) }}
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column label="退款订单号" align="left" width="300">
|
|
|
<template #default="scope">
|
|
|
<p class="order-font">
|
|
|
- <el-tag>退款</el-tag>
|
|
|
- {{ scope.row.merchantRefundNo }}
|
|
|
+ <el-tag size="small">商户</el-tag> {{ scope.row.merchantRefundId }}
|
|
|
</p>
|
|
|
<p class="order-font">
|
|
|
- <el-tag type="success">交易</el-tag>
|
|
|
- {{ scope.row.merchantOrderId }}
|
|
|
+ <el-tag size="small" type="warning">退款</el-tag> {{ scope.row.no }}
|
|
|
+ </p>
|
|
|
+ <p class="order-font" v-if="scope.row.channelRefundNo">
|
|
|
+ <el-tag size="small" type="success">渠道</el-tag> {{ scope.row.channelRefundNo }}
|
|
|
</p>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column label="支付订单号" align="center" prop="merchantRefundNo" width="250">
|
|
|
+ <el-table-column label="支付订单号" align="left" width="300">
|
|
|
<template #default="scope">
|
|
|
<p class="order-font">
|
|
|
- <el-tag>交易</el-tag>
|
|
|
- {{ scope.row.tradeNo }}
|
|
|
+ <el-tag size="small">商户</el-tag> {{ scope.row.merchantOrderId }}
|
|
|
</p>
|
|
|
<p class="order-font">
|
|
|
- <el-tag type="warning">渠道</el-tag>
|
|
|
- {{ scope.row.channelOrderNo }}
|
|
|
+ <el-tag size="small" type="success">渠道</el-tag> {{ scope.row.channelOrderNo }}
|
|
|
</p>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column label="支付金额(元)" align="center" prop="payAmount" width="100">
|
|
|
- <template #default="scope">
|
|
|
- ¥{{ parseFloat(scope.row.payAmount / 100).toFixed(2) }}
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- <el-table-column label="退款金额(元)" align="center" prop="refundAmount" width="100">
|
|
|
- <template #default="scope">
|
|
|
- ¥{{ parseFloat(scope.row.refundAmount / 100).toFixed(2) }}
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- <el-table-column label="退款类型" align="center" prop="type" width="80">
|
|
|
- <template #default="scope">
|
|
|
- <dict-tag :type="DICT_TYPE.PAY_REFUND_ORDER_TYPE" :value="scope.row.type" />
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
<el-table-column label="退款状态" align="center" prop="status">
|
|
|
<template #default="scope">
|
|
|
- <dict-tag :type="DICT_TYPE.PAY_REFUND_ORDER_STATUS" :value="scope.row.status" />
|
|
|
+ <dict-tag :type="DICT_TYPE.PAY_REFUND_STATUS" :value="scope.row.status" />
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column label="回调状态" align="center" prop="notifyStatus">
|
|
|
+ <el-table-column label="退款渠道" align="center" width="140">
|
|
|
<template #default="scope">
|
|
|
- <dict-tag :type="DICT_TYPE.PAY_ORDER_NOTIFY_STATUS" :value="scope.row.notifyStatus" />
|
|
|
+ <dict-tag :type="DICT_TYPE.PAY_CHANNEL_CODE" :value="scope.row.channelCode" />
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
<el-table-column
|
|
|
- label="退款原因"
|
|
|
- align="center"
|
|
|
- prop="reason"
|
|
|
- width="140"
|
|
|
- :show-overflow-tooltip="true"
|
|
|
- />
|
|
|
- <el-table-column
|
|
|
- label="创建时间"
|
|
|
- align="center"
|
|
|
- prop="createTime"
|
|
|
- width="180"
|
|
|
- :formatter="dateFormatter"
|
|
|
- />
|
|
|
- <el-table-column
|
|
|
- label="退款成功时间"
|
|
|
+ label="成功时间"
|
|
|
align="center"
|
|
|
prop="successTime"
|
|
|
width="180"
|
|
|
:formatter="dateFormatter"
|
|
|
/>
|
|
|
+ <el-table-column label="支付应用" align="center" prop="successTime" width="100">
|
|
|
+ <template #default="scope">
|
|
|
+ <span>{{ scope.row.appName }}</span>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
<el-table-column label="操作" align="center" fixed="right">
|
|
|
<template #default="scope">
|
|
|
<el-button
|
|
@@ -237,8 +207,8 @@
|
|
|
<script lang="ts" setup>
|
|
|
import { DICT_TYPE, getIntDictOptions, getStrDictOptions } from '@/utils/dict'
|
|
|
import { dateFormatter } from '@/utils/formatTime'
|
|
|
-// import * as MerchantApi from '@/api/pay/merchant'
|
|
|
import * as RefundApi from '@/api/pay/refund'
|
|
|
+import * as AppApi from '@/api/pay/app'
|
|
|
import RefundDetail from './RefundDetail.vue'
|
|
|
import download from '@/utils/download'
|
|
|
|
|
@@ -254,34 +224,20 @@ const queryParams = reactive({
|
|
|
pageSize: 10,
|
|
|
merchantId: undefined,
|
|
|
appId: undefined,
|
|
|
- channelId: undefined,
|
|
|
channelCode: undefined,
|
|
|
- orderId: undefined,
|
|
|
- tradeNo: undefined,
|
|
|
merchantOrderId: undefined,
|
|
|
- merchantRefundNo: undefined,
|
|
|
- notifyUrl: undefined,
|
|
|
- notifyStatus: undefined,
|
|
|
+ merchantRefundId: undefined,
|
|
|
status: undefined,
|
|
|
- type: undefined,
|
|
|
- payAmount: undefined,
|
|
|
- refundAmount: undefined,
|
|
|
- reason: undefined,
|
|
|
- userIp: undefined,
|
|
|
+ payPrice: undefined,
|
|
|
+ refundPrice: undefined,
|
|
|
channelOrderNo: undefined,
|
|
|
channelRefundNo: undefined,
|
|
|
- channelErrorCode: undefined,
|
|
|
- channelErrorMsg: undefined,
|
|
|
- channelExtras: undefined,
|
|
|
- expireTime: [],
|
|
|
- successTime: [],
|
|
|
- notifyTime: [],
|
|
|
- createTime: []
|
|
|
+ createTime: [],
|
|
|
+ successTime: []
|
|
|
})
|
|
|
const queryFormRef = ref() // 搜索的表单
|
|
|
const exportLoading = ref(false) // 导出等待
|
|
|
const appList = ref([]) // 支付应用列表集合
|
|
|
-const merchantList = ref([]) // 商户列表
|
|
|
|
|
|
/** 搜索按钮操作 */
|
|
|
const handleQuery = () => {
|
|
@@ -303,7 +259,7 @@ const getList = async () => {
|
|
|
|
|
|
/** 重置按钮操作 */
|
|
|
const resetQuery = () => {
|
|
|
- queryFormRef.value.resetFields()
|
|
|
+ queryFormRef.value?.resetFields()
|
|
|
handleQuery()
|
|
|
}
|
|
|
|
|
@@ -331,13 +287,9 @@ const openDetail = (id: number) => {
|
|
|
/** 初始化 **/
|
|
|
onMounted(async () => {
|
|
|
await getList()
|
|
|
- // 加载商户列表
|
|
|
- // merchantList.value = await MerchantApi.getMerchantListByName()
|
|
|
- // TODO 芋艿:候选少一个查询应用列表的接口
|
|
|
- // appList.value = await AppApi.getAppListByMerchantId()
|
|
|
+ appList.value = await AppApi.getAppList()
|
|
|
})
|
|
|
</script>
|
|
|
-
|
|
|
<style>
|
|
|
.order-font {
|
|
|
padding: 2px 0;
|