Skip to content

Commit 79e9bea

Browse files
committed
feat:【PAY 支付】示例转账单,改成示例提现单,理解成本更低
1 parent f5b48f8 commit 79e9bea

File tree

5 files changed

+56
-231
lines changed

5 files changed

+56
-231
lines changed

src/api/pay/transfer/index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ export const createTransfer = async (data: TransferVO) => {
1818
}
1919

2020
// 查询转账单列表
21-
export const getTransferPage = async (params) => {
21+
export const getTransferPage = async (params: PageParam) => {
2222
return await request.get({ url: `/pay/transfer/page`, params })
2323
}
2424

src/utils/dict.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,6 @@ export enum DICT_TYPE {
159159
PAY_NOTIFY_STATUS = 'pay_notify_status', // 商户支付回调状态
160160
PAY_NOTIFY_TYPE = 'pay_notify_type', // 商户支付回调状态
161161
PAY_TRANSFER_STATUS = 'pay_transfer_status', // 转账订单状态
162-
PAY_TRANSFER_TYPE = 'pay_transfer_type', // 转账订单状态
163162

164163
// ========== MP 模块 ==========
165164
MP_AUTO_REPLY_REQUEST_MATCH = 'mp_auto_reply_request_match', // 自动回复请求匹配类型

src/views/pay/demo/transfer/DemoTransferForm.vue renamed to src/views/pay/demo/withdraw/DemoWithdrawForm.vue

Lines changed: 29 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -7,36 +7,31 @@
77
label-width="120px"
88
v-loading="formLoading"
99
>
10-
<el-form-item label="转账类型" prop="type">
10+
<el-form-item label="提现标题" prop="subject">
11+
<el-input v-model="formData.subject" placeholder="请输入提现标题" />
12+
</el-form-item>
13+
<el-form-item label="提现类型" prop="type">
1114
<el-radio-group v-model="formData.type">
12-
<el-radio
13-
v-for="dict in getIntDictOptions(DICT_TYPE.PAY_TRANSFER_TYPE)"
14-
:key="dict.value"
15-
:value="dict.value"
16-
:disabled="dict.value === 2 || dict.value === 3 || dict.value === 4"
17-
>
18-
{{ dict.label }}
19-
</el-radio>
15+
<el-radio :value="1">支付宝</el-radio>
16+
<el-radio :value="2">微信支付</el-radio>
17+
<el-radio :value="3">钱包</el-radio>
2018
</el-radio-group>
2119
</el-form-item>
22-
<el-form-item label="转账金额(元)" prop="price">
20+
<el-form-item label="提现金额" prop="price">
2321
<el-input-number
2422
v-model="formData.price"
2523
:min="0"
2624
:precision="2"
2725
:step="0.01"
28-
placeholder="请输入转账金额"
26+
placeholder="请输入提现金额"
2927
style="width: 200px"
3028
/>
3129
</el-form-item>
3230
<el-form-item label="收款人姓名" prop="userName">
3331
<el-input v-model="formData.userName" placeholder="请输入收款人姓名" />
3432
</el-form-item>
35-
<el-form-item v-show="formData.type === 1" label="支付宝登录账号" prop="alipayLogonId">
36-
<el-input v-model="formData.alipayLogonId" placeholder="请输入支付宝登录账号" />
37-
</el-form-item>
38-
<el-form-item v-show="formData.type === 2" label="微信 openid" prop="openid">
39-
<el-input v-model="formData.openid" placeholder="请输入微信 openid" />
33+
<el-form-item label="收款人账号" prop="userAccount">
34+
<el-input v-model="formData.userAccount" placeholder="请输入收款人账号" />
4035
</el-form-item>
4136
</el-form>
4237
<template #footer>
@@ -46,7 +41,7 @@
4641
</Dialog>
4742
</template>
4843
<script setup lang="ts">
49-
import * as DemoTransferApi from '@/api/pay/demo/transfer'
44+
import * as DemoWithdrawApi from '@/api/pay/demo/withdraw'
5045
import { DICT_TYPE, getIntDictOptions } from '@/utils/dict'
5146
import { yuanToFen } from '@/utils'
5247
const { t } = useI18n() // 国际化
@@ -56,17 +51,19 @@ const dialogVisible = ref(false) // 弹窗的是否展示
5651
const dialogTitle = ref('') // 弹窗的标题
5752
const formLoading = ref(false) // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用
5853
const formType = ref('') // 表单的类型:create - 新增;update - 修改
59-
const formData = ref({
60-
id: undefined,
61-
price: undefined,
62-
type: undefined,
63-
userName: undefined,
64-
alipayLogonId: undefined,
65-
openid: undefined
54+
const formData = ref<DemoWithdrawApi.PayDemoWithdrawVO>({
55+
subject: '',
56+
price: 0,
57+
type: 1,
58+
userName: '',
59+
userAccount: ''
6660
})
6761
const formRules = reactive({
68-
price: [{ required: true, message: '转账金额不能为空', trigger: 'blur' }],
69-
type: [{ required: true, message: '转账类型不能为空', trigger: 'change' }]
62+
subject: [{ required: true, message: '提现标题不能为空', trigger: 'blur' }],
63+
price: [{ required: true, message: '提现金额不能为空', trigger: 'blur' }],
64+
type: [{ required: true, message: '提现类型不能为空', trigger: 'change' }],
65+
userName: [{ required: true, message: '收款人姓名不能为空', trigger: 'blur' }],
66+
userAccount: [{ required: true, message: '收款人账号不能为空', trigger: 'blur' }]
7067
})
7168
const formRef = ref() // 表单 Ref
7269
@@ -97,7 +94,7 @@ const submitForm = async () => {
9794
const data = { ...formData.value }
9895
data.price = yuanToFen(data.price)
9996
if (formType.value === 'create') {
100-
await DemoTransferApi.createDemoTransfer(data)
97+
await DemoWithdrawApi.createDemoWithdraw(data)
10198
message.success(t('common.createSuccess'))
10299
}
103100
dialogVisible.value = false
@@ -111,11 +108,11 @@ const submitForm = async () => {
111108
/** 重置表单 */
112109
const resetForm = () => {
113110
formData.value = {
114-
id: undefined,
115-
price: undefined,
116-
userName: undefined,
117-
alipayLogonId: undefined,
118-
openid: undefined
111+
subject: '',
112+
price: 0,
113+
type: 1,
114+
userName: '',
115+
userAccount: ''
119116
}
120117
formRef.value?.resetFields()
121118
}

src/views/pay/demo/transfer/index.vue renamed to src/views/pay/demo/withdraw/index.vue

Lines changed: 26 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@
1111
<el-form-item>
1212
<el-button @click="handleQuery"><Icon icon="ep:search" class="mr-5px" /> 搜索</el-button>
1313
<el-button @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" /> 重置</el-button>
14-
<el-button type="primary" plain @click="openForm('create')"
15-
><Icon icon="ep:plus" />创建业务转账单
14+
<el-button type="primary" plain @click="openForm('create')">
15+
<Icon icon="ep:plus" />创建示例提现单
1616
</el-button>
1717
</el-form-item>
1818
</el-form>
@@ -21,53 +21,42 @@
2121
<!-- 列表 -->
2222
<ContentWrap>
2323
<el-table v-loading="loading" :data="list" :show-overflow-tooltip="true">
24-
<el-table-column label="订单编号" align="center" prop="id" />
25-
<el-table-column label="转账类型" align="center" prop="type" width="120">
24+
<el-table-column label="提现单编号" align="center" prop="id" width="100" />
25+
<el-table-column label="提现标题" align="center" prop="subject" min-width="120" />
26+
<el-table-column label="提现类型" align="center" prop="type" min-width="90">
2627
<template #default="scope">
27-
<dict-tag :type="DICT_TYPE.PAY_TRANSFER_TYPE" :value="scope.row.type" />
28+
<el-tag v-if="scope.row.type === 1">支付宝</el-tag>
29+
<el-tag v-else-if="scope.row.type === 2">微信支付</el-tag>
30+
<el-tag v-else-if="scope.row.type === 3">钱包</el-tag>
2831
</template>
2932
</el-table-column>
30-
<el-table-column label="转账金额" align="center" prop="price">
33+
<el-table-column label="提现金额" align="center" prop="price" width="120">
3134
<template #default="scope">
3235
<span>¥{{ (scope.row.price / 100.0).toFixed(2) }}</span>
3336
</template>
3437
</el-table-column>
35-
<el-table-column label="收款人姓名" align="center" prop="userName" width="120" />
36-
<el-table-column label="支付宝登录账号" align="center" prop="alipayLogonId" width="180" />
37-
<el-table-column label="微信 openid" align="center" prop="openid" width="120" />
38-
<el-table-column label="转账状态" align="center" prop="transferStatus">
38+
<el-table-column label="收款人姓名" align="center" prop="userName" min-width="150" />
39+
<el-table-column label="收款人账号" align="center" prop="userAccount" min-width="250" />
40+
<el-table-column label="提现状态" align="center" prop="status" width="100">
3941
<template #default="scope">
40-
<dict-tag :type="DICT_TYPE.PAY_TRANSFER_STATUS" :value="scope.row.transferStatus" />
42+
<el-tag v-if="scope.row.status === 0" type="warning">等待转账</el-tag>
43+
<el-tag v-else-if="scope.row.status === 10" type="success">转账成功</el-tag>
44+
<el-tag v-else-if="scope.row.status === 20" type="danger">转账失败</el-tag>
45+
</template>
46+
</el-table-column>
47+
<el-table-column label="转账单号" align="center" prop="payTransferId" min-width="120" />
48+
<el-table-column label="支付渠道" align="center" prop="transferChannelCode" min-width="180">
49+
<template #default="scope">
50+
<dict-tag :type="DICT_TYPE.PAY_CHANNEL_CODE" :value="scope.row.transferChannelCode" />
4151
</template>
4252
</el-table-column>
43-
<el-table-column label="转账单号" align="center" prop="payTransferId" />
44-
<el-table-column label="支付渠道" align="center" prop="payChannelCode" />
4553
<el-table-column
4654
label="转账时间"
4755
align="center"
4856
prop="transferTime"
4957
:formatter="dateFormatter"
5058
width="180px"
5159
/>
52-
<el-table-column
53-
label="操作"
54-
align="center"
55-
class-name="small-padding fixed-width"
56-
width="100"
57-
fixed="right"
58-
>
59-
<template #default="scope">
60-
<el-button
61-
link
62-
type="primary"
63-
@click="handleTransfer(scope.row)"
64-
v-if="scope.row.transferStatus === 0"
65-
v-hasPermi="['pay:transfer:create']"
66-
>
67-
发起转账
68-
</el-button>
69-
</template>
70-
</el-table-column>
7160
</el-table>
7261
<!-- 分页 -->
7362
<Pagination
@@ -79,19 +68,14 @@
7968
</ContentWrap>
8069

8170
<!-- 表单弹窗:添加/修改 -->
82-
<DemoTransferForm ref="demoFormRef" @success="getList" />
83-
<CreatePayTransfer ref="payTransferRef" @success="getList" />
71+
<DemoWithdrawForm ref="demoFormRef" @success="getList" />
8472
</template>
8573

8674
<script setup lang="ts">
8775
import { dateFormatter } from '@/utils/formatTime'
88-
import * as DemoTransferApi from '@/api/pay/demo/transfer'
89-
import * as PayTransferApi from '@/api/pay/transfer'
90-
import DemoTransferForm from './DemoTransferForm.vue'
91-
import CreatePayTransfer from '../../transfer/CreatePayTransfer.vue'
76+
import * as DemoWithdrawApi from '@/api/pay/demo/withdraw'
77+
import DemoWithdrawForm from './DemoWithdrawForm.vue'
9278
import { DICT_TYPE } from '@/utils/dict'
93-
const message = useMessage() // 消息弹窗
94-
const { t } = useI18n() // 国际化
9579
9680
const loading = ref(true) // 列表的加载中
9781
const total = ref(0) // 列表的总页数
@@ -102,22 +86,11 @@ const queryParams = reactive({
10286
})
10387
const queryFormRef = ref() // 搜索的表单
10488
105-
let payTransfer = {
106-
appId: undefined,
107-
merchantTransferId: undefined,
108-
type: undefined,
109-
price: undefined,
110-
subject: undefined,
111-
userName: undefined,
112-
alipayLogonId: undefined,
113-
openid: undefined
114-
} as PayTransferApi.TransferVO // 传递给转账订单的数据
115-
11689
/** 查询列表 */
11790
const getList = async () => {
11891
loading.value = true
11992
try {
120-
const data = await DemoTransferApi.getDemoTransferPage(queryParams)
93+
const data = await DemoWithdrawApi.getDemoWithdrawPage(queryParams)
12194
list.value = data.list
12295
total.value = data.total
12396
} finally {
@@ -137,21 +110,12 @@ const resetQuery = () => {
137110
handleQuery()
138111
}
139112
140-
/** 创建业务转账单操作 */
113+
/** 创建示例提现单操作 */
141114
const demoFormRef = ref()
142-
const payTransferRef = ref()
143115
const openForm = (type: string) => {
144116
demoFormRef.value.open(type)
145117
}
146118
147-
/** 发起转账操作 */
148-
const handleTransfer = (row: any) => {
149-
payTransfer = { ...row }
150-
payTransfer.merchantTransferId = row.id.toString()
151-
payTransfer.subject = '示例转账'
152-
payTransferRef.value.showPayTransfer(payTransfer)
153-
}
154-
155119
/** 初始化 **/
156120
onMounted(() => {
157121
getList()

0 commit comments

Comments
 (0)