Skip to content

Commit 2aa372d

Browse files
committed
trade: 分销业务后台功能:推广用户列表
1 parent 87ca916 commit 2aa372d

File tree

3 files changed

+170
-3
lines changed

3 files changed

+170
-3
lines changed

src/utils/constants.ts

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -299,3 +299,20 @@ export const BrokerageEnabledConditionEnum = {
299299
name: '指定分销'
300300
}
301301
}
302+
/**
303+
* 分销用户类型枚举
304+
*/
305+
export const BrokerageUserTypeEnum = {
306+
ALL: {
307+
type: 0,
308+
name: '全部'
309+
},
310+
FIRST: {
311+
type: 1,
312+
name: '一级推广人'
313+
},
314+
SECOND: {
315+
type: 2,
316+
name: '二级推广人'
317+
}
318+
}
Lines changed: 145 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,145 @@
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-button :label="0">全部</el-radio-button>-->
22+
<!-- <el-radio-button :label="1">一级推广人</el-radio-button>-->
23+
<!-- <el-radio-button :label="2">二级推广人</el-radio-button>-->
24+
</el-radio-group>
25+
</el-form-item>
26+
<el-form-item label="绑定时间" prop="bindUserTime">
27+
<el-date-picker
28+
v-model="queryParams.bindUserTime"
29+
value-format="YYYY-MM-DD HH:mm:ss"
30+
type="daterange"
31+
start-placeholder="开始日期"
32+
end-placeholder="结束日期"
33+
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
34+
class="!w-240px"
35+
/>
36+
</el-form-item>
37+
<el-form-item>
38+
<el-button @click="handleQuery"><Icon icon="ep:search" class="mr-5px" /> 搜索</el-button>
39+
<el-button @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" /> 重置</el-button>
40+
</el-form-item>
41+
</el-form>
42+
</ContentWrap>
43+
44+
<!-- 列表 -->
45+
<ContentWrap>
46+
<el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true">
47+
<el-table-column label="用户编号" align="center" prop="id" min-width="80px" />
48+
<el-table-column label="头像" align="center" prop="avatar" width="70px">
49+
<template #default="scope">
50+
<el-avatar :src="scope.row.avatar" />
51+
</template>
52+
</el-table-column>
53+
<el-table-column label="昵称" align="center" prop="nickname" min-width="80px" />
54+
<el-table-column
55+
label="推广人数(一级)"
56+
align="center"
57+
prop="brokerageUserCount"
58+
min-width="110px"
59+
/>
60+
<el-table-column
61+
label="推广订单数量"
62+
align="center"
63+
prop="brokerageOrderCount"
64+
min-width="110px"
65+
/>
66+
<el-table-column label="推广资格" align="center" prop="brokerageEnabled" min-width="80px">
67+
<template #default="scope">
68+
<el-tag v-if="scope.row.brokerageEnabled">有</el-tag>
69+
<el-tag v-else type="info">无</el-tag>
70+
</template>
71+
</el-table-column>
72+
<el-table-column
73+
label="绑定时间"
74+
align="center"
75+
prop="bindUserTime"
76+
:formatter="dateFormatter"
77+
width="170px"
78+
/>
79+
</el-table>
80+
<!-- 分页 -->
81+
<Pagination
82+
:total="total"
83+
v-model:page="queryParams.pageNo"
84+
v-model:limit="queryParams.pageSize"
85+
@pagination="getList"
86+
/>
87+
</ContentWrap>
88+
</Dialog>
89+
</template>
90+
91+
<script setup lang="ts">
92+
import { dateFormatter } from '@/utils/formatTime'
93+
import * as BrokerageUserApi from '@/api/mall/trade/brokerage/user'
94+
import { BrokerageUserTypeEnum } from '@/utils/constants'
95+
96+
/** 推广人列表 */
97+
defineOptions({ name: 'BrokerageUserListDialog' })
98+
99+
const message = useMessage() // 消息弹窗
100+
101+
const loading = ref(true) // 列表的加载中
102+
const total = ref(0) // 列表的总页数
103+
const list = ref([]) // 列表的数据
104+
const queryParams = reactive({
105+
pageNo: 1,
106+
pageSize: 10,
107+
bindUserId: null,
108+
userType: BrokerageUserTypeEnum.ALL.type,
109+
bindUserTime: []
110+
})
111+
const queryFormRef = ref() // 搜索的表单
112+
113+
/** 打开弹窗 */
114+
const dialogVisible = ref(false) // 弹窗的是否展示
115+
const open = async (bindUserId: number) => {
116+
dialogVisible.value = true
117+
queryParams.bindUserId = bindUserId
118+
resetQuery()
119+
}
120+
defineExpose({ open }) // 提供 open 方法,用于打开弹窗
121+
122+
/** 查询列表 */
123+
const getList = async () => {
124+
loading.value = true
125+
try {
126+
const data = await BrokerageUserApi.getBrokerageUserPage(queryParams)
127+
list.value = data.list
128+
total.value = data.total
129+
} finally {
130+
loading.value = false
131+
}
132+
}
133+
134+
/** 搜索按钮操作 */
135+
const handleQuery = () => {
136+
queryParams.pageNo = 1
137+
getList()
138+
}
139+
140+
/** 重置按钮操作 */
141+
const resetQuery = () => {
142+
queryFormRef.value?.resetFields()
143+
handleQuery()
144+
}
145+
</script>

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

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -57,10 +57,10 @@
5757
</el-table-column>
5858
<el-table-column label="昵称" align="center" prop="nickname" min-width="80px" />
5959
<el-table-column
60-
label="推广用户数量(一级)"
60+
label="推广人数(一级)"
6161
align="center"
6262
prop="brokerageUserCount"
63-
min-width="110px"
63+
min-width="140px"
6464
/>
6565
<el-table-column
6666
label="推广订单数量"
@@ -183,6 +183,7 @@
183183
</ContentWrap>
184184
<!-- 修改上级推广人表单 -->
185185
<UpdateBindUserForm ref="updateBindUserFormRef" @success="getList" />
186+
<BrokerageUserListDialog ref="brokerageUserListDialogRef" />
186187
</template>
187188

188189
<script setup lang="ts">
@@ -191,6 +192,7 @@ import * as BrokerageUserApi from '@/api/mall/trade/brokerage/user'
191192
import { checkPermi } from '@/utils/permission'
192193
import { fenToYuanFormat } from '@/utils/formatter'
193194
import UpdateBindUserForm from '@/views/mall/trade/brokerage/user/UpdateBindUserForm.vue'
195+
import BrokerageUserListDialog from '@/views/mall/trade/brokerage/user/BrokerageUserListDialog.vue'
194196
195197
defineOptions({ name: 'TradeBrokerageUser' })
196198
@@ -250,7 +252,10 @@ const handleCommand = (command: string, row: BrokerageUserApi.BrokerageUserVO) =
250252
}
251253
252254
/** 打开推广人列表 */
253-
const openBrokerageUserTable = (id: number) => {}
255+
const brokerageUserListDialogRef = ref()
256+
const openBrokerageUserTable = (id: number) => {
257+
brokerageUserListDialogRef.value.open(id)
258+
}
254259
255260
/** 打开推广订单列表 */
256261
const openBrokerageOrderTable = (id: number) => {}

0 commit comments

Comments
 (0)