Skip to content

Commit 5ed9092

Browse files
committed
trade: 分销业务后台功能:修改上级推广人
1 parent 7ea3571 commit 5ed9092

File tree

3 files changed

+137
-14
lines changed

3 files changed

+137
-14
lines changed

src/api/mall/trade/brokerage/user/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ export interface BrokerageUserVO {
1010
frozenPrice: number
1111

1212
nickname: string
13+
avatar: string
1314
}
1415

1516
// 查询分销用户列表
Lines changed: 127 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,127 @@
1+
<template>
2+
<Dialog v-model="dialogVisible" title="修改上级推广人" width="500">
3+
<el-form
4+
ref="formRef"
5+
v-loading="formLoading"
6+
:model="formData"
7+
:rules="formRules"
8+
label-width="80px"
9+
>
10+
<el-form-item label="推广人" prop="bindUserId">
11+
<el-input
12+
v-model="formData.bindUserId"
13+
placeholder="请输入推广员编号"
14+
v-loading="formLoading"
15+
>
16+
<template #append>
17+
<el-button @click="handleGetUser"><Icon icon="ep:search" class="mr-5px" /></el-button>
18+
</template>
19+
</el-input>
20+
</el-form-item>
21+
</el-form>
22+
<el-descriptions v-if="bindUser" :column="1" border>
23+
<el-descriptions-item label="头像">
24+
<el-avatar :src="bindUser.avatar" />
25+
</el-descriptions-item>
26+
<el-descriptions-item label="昵称">{{ bindUser.nickname }}</el-descriptions-item>
27+
<el-descriptions-item label="推广资格">
28+
<el-tag v-if="bindUser.brokerageEnabled">有</el-tag>
29+
<el-tag v-else type="info">无</el-tag>
30+
</el-descriptions-item>
31+
<el-descriptions-item label="成为推广员的时间">
32+
{{ formatDate(bindUser.brokerageTime) }}
33+
</el-descriptions-item>
34+
</el-descriptions>
35+
<template #footer>
36+
<el-button :disabled="formLoading" type="primary" @click="submitForm">确 定</el-button>
37+
<el-button @click="dialogVisible = false">取 消</el-button>
38+
</template>
39+
</Dialog>
40+
</template>
41+
<script lang="ts" setup>
42+
import * as BrokerageUserApi from '@/api/mall/trade/brokerage/user'
43+
import { formatDate } from '@/utils/formatTime'
44+
45+
/** 修改上级推广人表单 */
46+
defineOptions({ name: 'UpdateBindUserForm' })
47+
48+
const { t } = useI18n() // 国际化
49+
const message = useMessage() // 消息弹窗
50+
51+
const dialogVisible = ref(false) // 弹窗的是否展示
52+
const formLoading = ref(false) // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用
53+
const formData = ref()
54+
const formRef = ref() // 表单 Ref
55+
const formRules = reactive({
56+
bindUserId: [{ required: true, message: '推广员人不能为空', trigger: 'blur' }]
57+
})
58+
59+
/** 打开弹窗 */
60+
const open = async (row: BrokerageUserApi.BrokerageUserVO) => {
61+
resetForm()
62+
// 设置数据
63+
formData.value.id = row.id
64+
formData.value.bindUserId = row.bindUserId
65+
// 反显上级推广人
66+
if (row.bindUserId) {
67+
await handleGetUser()
68+
}
69+
dialogVisible.value = true
70+
}
71+
defineExpose({ open }) // 提供 open 方法,用于打开弹窗
72+
73+
/** 提交表单 */
74+
const emit = defineEmits(['success']) // 定义 success 事件,用于操作成功后的回调
75+
/** 修改上级推广人 */
76+
const submitForm = async () => {
77+
if (formLoading.value) return
78+
// 校验表单
79+
if (!formRef) return
80+
const valid = await formRef.value.validate()
81+
if (!valid) return
82+
83+
if (!bindUser.value) {
84+
message.error('请先查询并确认推广人')
85+
return
86+
}
87+
88+
// 提交请求
89+
formLoading.value = true
90+
try {
91+
// 发起修改
92+
await BrokerageUserApi.updateBindUser(formData.value)
93+
message.success(t('common.updateSuccess'))
94+
dialogVisible.value = false
95+
// 发送操作成功的事件
96+
emit('success', true)
97+
} finally {
98+
formLoading.value = false
99+
}
100+
}
101+
102+
/** 重置表单 */
103+
const resetForm = () => {
104+
formData.value = {
105+
id: 0,
106+
bindUserId: undefined
107+
}
108+
formRef.value?.resetFields()
109+
bindUser.value = undefined
110+
}
111+
112+
/** 查询推广员 */
113+
const bindUser = ref<BrokerageUserApi.BrokerageUserVO>()
114+
const handleGetUser = async () => {
115+
if (formData.value.bindUserId == formData.value.id) {
116+
message.error('不能绑定自己为推广人')
117+
return
118+
}
119+
120+
formLoading.value = true
121+
bindUser.value = await BrokerageUserApi.getBrokerageUser(formData.value.bindUserId)
122+
if (!bindUser.value) {
123+
message.warning('推广员不存在')
124+
}
125+
formLoading.value = false
126+
}
127+
</script>

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

Lines changed: 9 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,7 @@
154154
推广订单
155155
</el-dropdown-item>
156156
<el-dropdown-item
157-
command="openUpdateBindUser"
157+
command="openUpdateBindUserForm"
158158
v-if="checkPermi(['trade:brokerage-user:update-bind-user'])"
159159
>
160160
修改上级推广人
@@ -181,13 +181,16 @@
181181
@pagination="getList"
182182
/>
183183
</ContentWrap>
184+
<!-- 修改上级推广人表单 -->
185+
<UpdateBindUserForm ref="updateBindUserFormRef" @success="getList" />
184186
</template>
185187

186188
<script setup lang="ts">
187189
import { dateFormatter } from '@/utils/formatTime'
188190
import * as BrokerageUserApi from '@/api/mall/trade/brokerage/user'
189191
import { checkPermi } from '@/utils/permission'
190192
import { fenToYuanFormat } from '@/utils/formatter'
193+
import UpdateBindUserForm from '@/views/mall/trade/brokerage/user/UpdateBindUserForm.vue'
191194
192195
defineOptions({ name: 'TradeBrokerageUser' })
193196
@@ -237,8 +240,8 @@ const handleCommand = (command: string, row: BrokerageUserApi.BrokerageUserVO) =
237240
case 'openBrokerageOrderTable':
238241
openBrokerageOrderTable(row.id)
239242
break
240-
case 'openUpdateBindUser':
241-
openUpdateBindUser(row.id)
243+
case 'openUpdateBindUserForm':
244+
openUpdateBindUserForm(row)
242245
break
243246
case 'handleClearBindUser':
244247
handleClearBindUser(row)
@@ -253,17 +256,9 @@ const openBrokerageUserTable = (id: number) => {}
253256
const openBrokerageOrderTable = (id: number) => {}
254257
255258
/** 打开表单:修改上级推广人 */
256-
const openUpdateBindUser = (id: number) => {}
257-
/** 修改上级推广人 */
258-
const handleUpdateBindUser = async (row: BrokerageUserApi.BrokerageUserVO) => {
259-
try {
260-
// 二次确认
261-
await message.confirm(`确认要修改"${row.nickname}"的上级推广人吗?`)
262-
// 发起修改
263-
await BrokerageUserApi.updateBindUser({ id: row.id })
264-
// 刷新列表
265-
await getList()
266-
} catch {}
259+
const updateBindUserFormRef = ref()
260+
const openUpdateBindUserForm = (row: BrokerageUserApi.BrokerageUserVO) => {
261+
updateBindUserFormRef.value.open(row)
267262
}
268263
269264
/** 清除上级推广人 */

0 commit comments

Comments
 (0)