Skip to content

Commit 0582d41

Browse files
committed
trade: 分销业务后台功能:推广订单列表
1 parent 2aa372d commit 0582d41

File tree

5 files changed

+182
-4
lines changed

5 files changed

+182
-4
lines changed

src/utils/constants.ts

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -316,3 +316,16 @@ export const BrokerageUserTypeEnum = {
316316
name: '二级推广人'
317317
}
318318
}
319+
/**
320+
* 佣金记录业务类型枚举
321+
*/
322+
export const BrokerageRecordBizTypeEnum = {
323+
ORDER: {
324+
type: 1,
325+
name: '获得推广佣金'
326+
},
327+
WITHDRAW: {
328+
type: 2,
329+
name: '提现申请'
330+
}
331+
}

src/views/mall/trade/brokerage/record/index.vue

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,12 @@
6565
<el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true">
6666
<el-table-column label="编号" align="center" prop="id" min-width="60" />
6767
<el-table-column label="用户编号" align="center" prop="userId" min-width="80" />
68+
<el-table-column label="头像" align="center" prop="userAvatar" width="70px">
69+
<template #default="scope">
70+
<el-avatar :src="scope.row.userAvatar" />
71+
</template>
72+
</el-table-column>
73+
<el-table-column label="昵称" align="center" prop="userNickname" min-width="80px" />
6874
<el-table-column label="业务类型" align="center" prop="bizType" min-width="85">
6975
<template #default="scope">
7076
<dict-tag :type="DICT_TYPE.BROKERAGE_RECORD_BIZ_TYPE" :value="scope.row.bizType" />
Lines changed: 155 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,155 @@
1+
<template>
2+
<Dialog v-model="dialogVisible" title="推广人列表" width="75%">
3+
<ContentWrap>
4+
<!-- 搜索工作栏 -->
5+
<el-form
6+
class="-mb-15px"
7+
:model="queryParams"
8+
ref="queryFormRef"
9+
:inline="true"
10+
label-width="85px"
11+
>
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>
21+
</el-radio-group>
22+
</el-form-item>
23+
<el-form-item label="状态" prop="status">
24+
<el-select
25+
v-model="queryParams.status"
26+
placeholder="请选择状态"
27+
clearable
28+
class="!w-240px"
29+
>
30+
<el-option
31+
v-for="dict in getIntDictOptions(DICT_TYPE.BROKERAGE_RECORD_STATUS)"
32+
:key="dict.value"
33+
:label="dict.label"
34+
:value="dict.value"
35+
/>
36+
</el-select>
37+
</el-form-item>
38+
<el-form-item label="绑定时间" prop="createTime">
39+
<el-date-picker
40+
v-model="queryParams.createTime"
41+
value-format="YYYY-MM-DD HH:mm:ss"
42+
type="daterange"
43+
start-placeholder="开始日期"
44+
end-placeholder="结束日期"
45+
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
46+
class="!w-240px"
47+
/>
48+
</el-form-item>
49+
<el-form-item>
50+
<el-button @click="handleQuery"><Icon icon="ep:search" class="mr-5px" /> 搜索</el-button>
51+
<el-button @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" /> 重置</el-button>
52+
</el-form-item>
53+
</el-form>
54+
</ContentWrap>
55+
56+
<!-- 列表 -->
57+
<ContentWrap>
58+
<el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true">
59+
<el-table-column label="订单编号" align="center" prop="bizId" min-width="80px" />
60+
<el-table-column label="用户编号" align="center" prop="sourceUserId" min-width="80px" />
61+
<el-table-column label="头像" align="center" prop="sourceUserAvatar" width="70px">
62+
<template #default="scope">
63+
<el-avatar :src="scope.row.sourceUserAvatar" />
64+
</template>
65+
</el-table-column>
66+
<el-table-column label="昵称" align="center" prop="sourceUserNickname" min-width="80px" />
67+
<el-table-column
68+
label="佣金"
69+
align="center"
70+
prop="price"
71+
min-width="100px"
72+
:formatter="fenToYuanFormat"
73+
/>
74+
<el-table-column label="状态" align="center" prop="status" min-width="85">
75+
<template #default="scope">
76+
<dict-tag :type="DICT_TYPE.BROKERAGE_RECORD_STATUS" :value="scope.row.status" />
77+
</template>
78+
</el-table-column>
79+
<el-table-column
80+
label="创建时间"
81+
align="center"
82+
prop="createTime"
83+
:formatter="dateFormatter"
84+
width="170px"
85+
/>
86+
</el-table>
87+
<!-- 分页 -->
88+
<Pagination
89+
:total="total"
90+
v-model:page="queryParams.pageNo"
91+
v-model:limit="queryParams.pageSize"
92+
@pagination="getList"
93+
/>
94+
</ContentWrap>
95+
</Dialog>
96+
</template>
97+
98+
<script setup lang="ts">
99+
import { dateFormatter } from '@/utils/formatTime'
100+
import * as BrokerageRecordApi from '@/api/mall/trade/brokerage/record'
101+
import { BrokerageRecordBizTypeEnum, BrokerageUserTypeEnum } from '@/utils/constants'
102+
import { fenToYuanFormat } from '@/utils/formatter'
103+
import { DICT_TYPE, getIntDictOptions } from '@/utils/dict'
104+
105+
/** 推广订单列表 */
106+
defineOptions({ name: 'BrokerageOrderListDialog' })
107+
108+
const message = useMessage() // 消息弹窗
109+
110+
const loading = ref(true) // 列表的加载中
111+
const total = ref(0) // 列表的总页数
112+
const list = ref([]) // 列表的数据
113+
const queryParams = reactive({
114+
pageNo: 1,
115+
pageSize: 10,
116+
userId: null,
117+
bizType: BrokerageRecordBizTypeEnum.ORDER.type,
118+
userType: BrokerageUserTypeEnum.ALL.type,
119+
createTime: []
120+
})
121+
const queryFormRef = ref() // 搜索的表单
122+
123+
/** 打开弹窗 */
124+
const dialogVisible = ref(false) // 弹窗的是否展示
125+
const open = async (userId: number) => {
126+
dialogVisible.value = true
127+
queryParams.userId = userId
128+
resetQuery()
129+
}
130+
defineExpose({ open }) // 提供 open 方法,用于打开弹窗
131+
132+
/** 查询列表 */
133+
const getList = async () => {
134+
loading.value = true
135+
try {
136+
const data = await BrokerageRecordApi.getBrokerageRecordPage(queryParams)
137+
list.value = data.list
138+
total.value = data.total
139+
} finally {
140+
loading.value = false
141+
}
142+
}
143+
144+
/** 搜索按钮操作 */
145+
const handleQuery = () => {
146+
queryParams.pageNo = 1
147+
getList()
148+
}
149+
150+
/** 重置按钮操作 */
151+
const resetQuery = () => {
152+
queryFormRef.value?.resetFields()
153+
handleQuery()
154+
}
155+
</script>

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

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,6 @@
1818
>
1919
{{ item.name }}
2020
</el-radio-button>
21-
<!-- <el-radio-button :label="0">全部</el-radio-button>-->
22-
<!-- <el-radio-button :label="1">一级推广人</el-radio-button>-->
23-
<!-- <el-radio-button :label="2">二级推广人</el-radio-button>-->
2421
</el-radio-group>
2522
</el-form-item>
2623
<el-form-item label="绑定时间" prop="bindUserTime">

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

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -183,7 +183,10 @@
183183
</ContentWrap>
184184
<!-- 修改上级推广人表单 -->
185185
<UpdateBindUserForm ref="updateBindUserFormRef" @success="getList" />
186+
<!-- 推广人列表 -->
186187
<BrokerageUserListDialog ref="brokerageUserListDialogRef" />
188+
<!-- 推广订单列表 -->
189+
<BrokerageOrderListDialog ref="brokerageOrderListDialogRef" />
187190
</template>
188191

189192
<script setup lang="ts">
@@ -193,6 +196,7 @@ import { checkPermi } from '@/utils/permission'
193196
import { fenToYuanFormat } from '@/utils/formatter'
194197
import UpdateBindUserForm from '@/views/mall/trade/brokerage/user/UpdateBindUserForm.vue'
195198
import BrokerageUserListDialog from '@/views/mall/trade/brokerage/user/BrokerageUserListDialog.vue'
199+
import BrokerageOrderListDialog from '@/views/mall/trade/brokerage/user/BrokerageOrderListDialog.vue'
196200
197201
defineOptions({ name: 'TradeBrokerageUser' })
198202
@@ -258,7 +262,10 @@ const openBrokerageUserTable = (id: number) => {
258262
}
259263
260264
/** 打开推广订单列表 */
261-
const openBrokerageOrderTable = (id: number) => {}
265+
const brokerageOrderListDialogRef = ref()
266+
const openBrokerageOrderTable = (id: number) => {
267+
brokerageOrderListDialogRef.value.open(id)
268+
}
262269
263270
/** 打开表单:修改上级推广人 */
264271
const updateBindUserFormRef = ref()

0 commit comments

Comments
 (0)