Skip to content

Commit df6a384

Browse files
YunaiVgitee-org
authored andcommitted
!244 trade: 分销业务review代码修改
Merge pull request !244 from 疯狂的世界/brokerage
2 parents f63d518 + 854acf6 commit df6a384

File tree

7 files changed

+439
-41
lines changed

7 files changed

+439
-41
lines changed
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
import request from '@/config/axios'
2+
3+
export interface BrokerageWithdrawVO {
4+
id: number
5+
userId: number
6+
price: number
7+
feePrice: number
8+
totalPrice: number
9+
type: number
10+
name: string
11+
accountNo: string
12+
bankName: string
13+
bankAddress: string
14+
accountQrCodeUrl: string
15+
status: number
16+
auditReason: string
17+
auditTime: Date
18+
remark: string
19+
}
20+
21+
// 查询佣金提现列表
22+
export const getBrokerageWithdrawPage = async (params: any) => {
23+
return await request.get({ url: `/trade/brokerage-withdraw/page`, params })
24+
}
25+
26+
// 查询佣金提现详情
27+
export const getBrokerageWithdraw = async (id: number) => {
28+
return await request.get({ url: `/trade/brokerage-withdraw/get?id=` + id })
29+
}
30+
31+
// 佣金提现 - 通过申请
32+
export const approveBrokerageWithdraw = async (id: number) => {
33+
return await request.put({ url: `/trade/brokerage-withdraw/approve?id=` + id })
34+
}
35+
36+
// 审核佣金提现 - 驳回申请
37+
export const rejectBrokerageWithdraw = async (data: BrokerageWithdrawVO) => {
38+
return await request.put({ url: `/trade/brokerage-withdraw/reject`, data })
39+
}

src/utils/constants.ts

Lines changed: 45 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -300,32 +300,61 @@ export const BrokerageEnabledConditionEnum = {
300300
}
301301
}
302302
/**
303-
* 分销用户类型枚举
303+
* 佣金记录业务类型枚举
304304
*/
305-
export const BrokerageUserTypeEnum = {
306-
ALL: {
307-
type: 0,
308-
name: '全部'
309-
},
310-
FIRST: {
305+
export const BrokerageRecordBizTypeEnum = {
306+
ORDER: {
311307
type: 1,
312-
name: '一级推广人'
308+
name: '获得推广佣金'
313309
},
314-
SECOND: {
310+
WITHDRAW: {
315311
type: 2,
316-
name: '二级推广人'
312+
name: '提现申请'
317313
}
318314
}
319315
/**
320-
* 佣金记录业务类型枚举
316+
* 佣金提现状态枚举
321317
*/
322-
export const BrokerageRecordBizTypeEnum = {
323-
ORDER: {
318+
export const BrokerageWithdrawStatusEnum = {
319+
AUDITING: {
320+
status: 0,
321+
name: '审核中'
322+
},
323+
AUDIT_SUCCESS: {
324+
status: 10,
325+
name: '审核通过'
326+
},
327+
AUDIT_FAIL: {
328+
status: 20,
329+
name: '审核不通过'
330+
},
331+
WITHDRAW_SUCCESS: {
332+
status: 11,
333+
name: '提现成功'
334+
},
335+
WITHDRAW_FAIL: {
336+
status: 21,
337+
name: '提现失败'
338+
}
339+
}
340+
/**
341+
* 佣金提现类型枚举
342+
*/
343+
export const BrokerageWithdrawTypeEnum = {
344+
WALLET: {
324345
type: 1,
325-
name: '获得推广佣金'
346+
name: '钱包'
326347
},
327-
WITHDRAW: {
348+
BANK: {
328349
type: 2,
329-
name: '提现申请'
350+
name: '银行卡'
351+
},
352+
WECHAT: {
353+
type: 3,
354+
name: '微信'
355+
},
356+
ALIPAY: {
357+
type: 4,
358+
name: '支付宝'
330359
}
331360
}

src/utils/dict.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -171,6 +171,7 @@ export enum DICT_TYPE {
171171
BROKERAGE_WITHDRAW_TYPE = 'brokerage_withdraw_type', // 佣金冻结时间
172172
BROKERAGE_RECORD_BIZ_TYPE = 'brokerage_record_biz_type', // 佣金业务类型
173173
BROKERAGE_RECORD_STATUS = 'brokerage_record_status', // 佣金状态
174+
BROKERAGE_WITHDRAW_STATUS = 'brokerage_withdraw_status', // 佣金提现状态
174175

175176
// ========== MALL - 营销模块 ==========
176177
PROMOTION_DISCOUNT_TYPE = 'promotion_discount_type', // 优惠类型

src/views/mall/trade/brokerage/user/BrokerageOrderListDialog.vue

Lines changed: 10 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -9,15 +9,11 @@
99
:inline="true"
1010
label-width="85px"
1111
>
12-
<el-form-item label="用户类型" prop="userType">
13-
<el-radio-group v-model="queryParams.userType" @change="handleQuery">
14-
<el-radio-button
15-
v-for="item in BrokerageUserTypeEnum"
16-
:key="item.type"
17-
:label="item.type"
18-
>
19-
{{ item.name }}
20-
</el-radio-button>
12+
<el-form-item label="用户类型" prop="level">
13+
<el-radio-group v-model="queryParams.level" @change="handleQuery">
14+
<el-radio-button checked>全部</el-radio-button>
15+
<el-radio-button label="1">一级推广人</el-radio-button>
16+
<el-radio-button label="2">二级推广人</el-radio-button>
2117
</el-radio-group>
2218
</el-form-item>
2319
<el-form-item label="状态" prop="status">
@@ -98,7 +94,7 @@
9894
<script setup lang="ts">
9995
import { dateFormatter } from '@/utils/formatTime'
10096
import * as BrokerageRecordApi from '@/api/mall/trade/brokerage/record'
101-
import { BrokerageRecordBizTypeEnum, BrokerageUserTypeEnum } from '@/utils/constants'
97+
import { BrokerageRecordBizTypeEnum } from '@/utils/constants'
10298
import { fenToYuanFormat } from '@/utils/formatter'
10399
import { DICT_TYPE, getIntDictOptions } from '@/utils/dict'
104100
@@ -115,14 +111,15 @@ const queryParams = reactive({
115111
pageSize: 10,
116112
userId: null,
117113
bizType: BrokerageRecordBizTypeEnum.ORDER.type,
118-
userType: BrokerageUserTypeEnum.ALL.type,
119-
createTime: []
114+
level: '',
115+
createTime: [],
116+
status: null
120117
})
121118
const queryFormRef = ref() // 搜索的表单
122119
123120
/** 打开弹窗 */
124121
const dialogVisible = ref(false) // 弹窗的是否展示
125-
const open = async (userId: number) => {
122+
const open = async (userId: any) => {
126123
dialogVisible.value = true
127124
queryParams.userId = userId
128125
resetQuery()

src/views/mall/trade/brokerage/user/BrokerageUserListDialog.vue

Lines changed: 7 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -9,15 +9,11 @@
99
:inline="true"
1010
label-width="85px"
1111
>
12-
<el-form-item label="用户类型" prop="userType">
13-
<el-radio-group v-model="queryParams.userType" @change="handleQuery">
14-
<el-radio-button
15-
v-for="item in BrokerageUserTypeEnum"
16-
:key="item.type"
17-
:label="item.type"
18-
>
19-
{{ item.name }}
20-
</el-radio-button>
12+
<el-form-item label="用户类型" prop="level">
13+
<el-radio-group v-model="queryParams.level" @change="handleQuery">
14+
<el-radio-button checked>全部</el-radio-button>
15+
<el-radio-button label="1">一级推广人</el-radio-button>
16+
<el-radio-button label="2">二级推广人</el-radio-button>
2117
</el-radio-group>
2218
</el-form-item>
2319
<el-form-item label="绑定时间" prop="bindUserTime">
@@ -88,7 +84,6 @@
8884
<script setup lang="ts">
8985
import { dateFormatter } from '@/utils/formatTime'
9086
import * as BrokerageUserApi from '@/api/mall/trade/brokerage/user'
91-
import { BrokerageUserTypeEnum } from '@/utils/constants'
9287
9388
/** 推广人列表 */
9489
defineOptions({ name: 'BrokerageUserListDialog' })
@@ -102,14 +97,14 @@ const queryParams = reactive({
10297
pageNo: 1,
10398
pageSize: 10,
10499
bindUserId: null,
105-
userType: BrokerageUserTypeEnum.ALL.type,
100+
level: '',
106101
bindUserTime: []
107102
})
108103
const queryFormRef = ref() // 搜索的表单
109104
110105
/** 打开弹窗 */
111106
const dialogVisible = ref(false) // 弹窗的是否展示
112-
const open = async (bindUserId: number) => {
107+
const open = async (bindUserId: any) => {
113108
dialogVisible.value = true
114109
queryParams.bindUserId = bindUserId
115110
resetQuery()
Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
<template>
2+
<Dialog title="审核" v-model="dialogVisible">
3+
<el-form
4+
ref="formRef"
5+
:model="formData"
6+
:rules="formRules"
7+
label-width="100px"
8+
v-loading="formLoading"
9+
>
10+
<el-form-item label="驳回原因" prop="auditReason">
11+
<el-input v-model="formData.auditReason" type="textarea" placeholder="请输入驳回原因" />
12+
</el-form-item>
13+
</el-form>
14+
<template #footer>
15+
<el-button @click="submitForm" type="primary" :disabled="formLoading">确 定</el-button>
16+
<el-button @click="dialogVisible = false">取 消</el-button>
17+
</template>
18+
</Dialog>
19+
</template>
20+
<script setup lang="ts">
21+
import * as BrokerageWithdrawApi from '@/api/mall/trade/brokerage/withdraw'
22+
23+
const message = useMessage() // 消息弹窗
24+
25+
const dialogVisible = ref(false) // 弹窗的是否展示
26+
const formLoading = ref(false) // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用
27+
const formData = ref({
28+
id: undefined,
29+
auditReason: undefined
30+
})
31+
const formRules = reactive({
32+
auditReason: [{ required: true, message: '驳回原因不能为空', trigger: 'blur' }]
33+
})
34+
const formRef = ref() // 表单 Ref
35+
36+
/** 打开弹窗 */
37+
const open = async (id: number) => {
38+
dialogVisible.value = true
39+
resetForm()
40+
formData.value.id = id
41+
}
42+
defineExpose({ open }) // 提供 open 方法,用于打开弹窗
43+
44+
/** 提交表单 */
45+
const emit = defineEmits(['success']) // 定义 success 事件,用于操作成功后的回调
46+
const submitForm = async () => {
47+
// 校验表单
48+
if (!formRef) return
49+
const valid = await formRef.value.validate()
50+
if (!valid) return
51+
// 提交请求
52+
formLoading.value = true
53+
try {
54+
const data = formData.value as unknown as BrokerageWithdrawApi.BrokerageWithdrawVO
55+
await BrokerageWithdrawApi.rejectBrokerageWithdraw(data)
56+
message.success('驳回成功')
57+
dialogVisible.value = false
58+
// 发送操作成功的事件
59+
emit('success')
60+
} finally {
61+
formLoading.value = false
62+
}
63+
}
64+
65+
/** 重置表单 */
66+
const resetForm = () => {
67+
formData.value = {
68+
id: undefined,
69+
auditReason: undefined
70+
}
71+
formRef.value?.resetFields()
72+
}
73+
</script>

0 commit comments

Comments
 (0)