Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
phsl
/
admin
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Snippets
Members
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Unverified
Commit
7ee8cb89
authored
Dec 01, 2024
by
芋道源码
Committed by
Gitee
Dec 01, 2024
Browse files
Options
Browse Files
Download
Plain Diff
!607 【功能新增】商城分销: 创建分销员
Merge pull request !607 from puhui999/dev
parents
6dee7415
e0e287c8
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
266 additions
and
48 deletions
+266
-48
src/api/mall/trade/brokerage/user/index.ts
+5
-0
src/views/mall/trade/brokerage/user/CreateUserForm.vue
+189
-0
src/views/mall/trade/brokerage/user/index.vue
+72
-48
No files found.
src/api/mall/trade/brokerage/user/index.ts
View file @
7ee8cb89
...
...
@@ -13,6 +13,11 @@ export interface BrokerageUserVO {
avatar
:
string
}
// 创建分销用户
export
const
createBrokerageUser
=
(
data
:
any
)
=>
{
return
request
.
post
({
url
:
'/trade/brokerage-user/create'
,
data
})
}
// 查询分销用户列表
export
const
getBrokerageUserPage
=
async
(
params
:
any
)
=>
{
return
await
request
.
get
({
url
:
`/trade/brokerage-user/page`
,
params
})
...
...
src/views/mall/trade/brokerage/user/CreateUserForm.vue
0 → 100644
View file @
7ee8cb89
<
template
>
<Dialog
v-model=
"dialogVisible"
title=
"创建分销员"
width=
"800"
>
<el-form
ref=
"formRef"
v-loading=
"formLoading"
:model=
"formData"
:rules=
"formRules"
label-width=
"80"
>
<el-row
:gutter=
"20"
>
<el-col
:span=
"12"
:xs=
"24"
>
<el-form-item
label=
"可用佣金"
prop=
"price"
>
<el-input-number
v-model=
"formData.price"
:min=
"0"
class=
"w-1/1!"
/>
</el-form-item>
</el-col>
<el-col
:span=
"12"
:xs=
"24"
>
<el-form-item
label=
"冻结佣金"
prop=
"price"
>
<el-input-number
v-model=
"formData.frozenPrice"
:min=
"0"
class=
"w-1/1!"
/>
</el-form-item>
</el-col>
<el-col
:span=
"12"
:xs=
"24"
>
<el-form-item
label=
"推广人"
prop=
"bindUserId"
>
<el-input
v-model=
"formData.bindUserId"
v-loading=
"formLoading"
placeholder=
"请输入推广员编号"
>
<template
#
append
>
<el-button
@
click=
"handleGetUser(formData.bindUserId, '推广员')"
>
<Icon
class=
"mr-5px"
icon=
"ep:search"
/>
</el-button>
</
template
>
</el-input>
</el-form-item>
<!-- 展示上级推广人的信息 -->
<el-descriptions
v-if=
"userInfo.bindUser"
:column=
"1"
border
>
<el-descriptions-item
label=
"头像"
>
<el-avatar
:src=
"userInfo.bindUser?.avatar"
/>
</el-descriptions-item>
<el-descriptions-item
label=
"昵称"
>
{{ userInfo.bindUser?.nickname }}
</el-descriptions-item>
<el-descriptions-item
label=
"推广资格"
>
<el-tag
v-if=
"userInfo.bindUser?.brokerageEnabled"
>
有
</el-tag>
<el-tag
v-else
type=
"info"
>
无
</el-tag>
</el-descriptions-item>
<el-descriptions-item
label=
"成为推广员的时间"
>
{{ formatDate(userInfo.bindUser?.brokerageTime) }}
</el-descriptions-item>
</el-descriptions>
</el-col>
<el-col
:span=
"12"
:xs=
"24"
>
<el-form-item
label=
"分销员"
prop=
"userId"
>
<el-input
v-model=
"formData.userId"
v-loading=
"formLoading"
placeholder=
"请输入分销员编号"
>
<
template
#
append
>
<el-button
@
click=
"handleGetUser(formData.userId, '分销员')"
>
<Icon
class=
"mr-5px"
icon=
"ep:search"
/>
</el-button>
</
template
>
</el-input>
</el-form-item>
<!-- 展示分销员的信息 -->
<el-descriptions
v-if=
"userInfo.user"
:column=
"1"
border
>
<el-descriptions-item
label=
"头像"
>
<el-avatar
:src=
"userInfo.user?.avatar"
/>
</el-descriptions-item>
<el-descriptions-item
label=
"昵称"
>
{{ userInfo.user?.nickname }}
</el-descriptions-item>
<el-descriptions-item
label=
"推广资格"
>
<el-switch
v-model=
"formData.brokerageEnabled"
:disabled=
"!checkPermi(['trade:brokerage-user:update-bind-user'])"
active-text=
"有"
inactive-text=
"无"
inline-prompt
/>
</el-descriptions-item>
<el-descriptions-item
label=
"成为推广员的时间"
>
{{ formatDate(userInfo.user?.brokerageTime) }}
</el-descriptions-item>
</el-descriptions>
</el-col>
</el-row>
</el-form>
<
template
#
footer
>
<el-button
:disabled=
"formLoading"
type=
"primary"
@
click=
"submitForm"
>
确 定
</el-button>
<el-button
@
click=
"dialogVisible = false"
>
取 消
</el-button>
</
template
>
</Dialog>
</template>
<
script
lang=
"ts"
setup
>
import
*
as
BrokerageUserApi
from
'@/api/mall/trade/brokerage/user'
import
*
as
UserApi
from
'@/api/member/user'
import
{
formatDate
}
from
'@/utils/formatTime'
import
{
checkPermi
}
from
'@/utils/permission'
defineOptions
({
name
:
'CreateUserForm'
})
const
{
t
}
=
useI18n
()
// 国际化
const
message
=
useMessage
()
// 消息弹窗
const
dialogVisible
=
ref
(
false
)
// 弹窗的是否展示
const
formLoading
=
ref
(
false
)
// 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用
const
formData
=
ref
({
userId
:
undefined
,
bindUserId
:
undefined
,
brokerageEnabled
:
false
,
price
:
0
,
frozenPrice
:
0
})
const
formRef
=
ref
()
// 表单 Ref
const
formRules
=
reactive
({
userId
:
[{
required
:
true
,
message
:
'分销员不能为空'
,
trigger
:
'blur'
}]
})
/** 打开弹窗 */
const
open
=
async
()
=>
{
resetForm
()
dialogVisible
.
value
=
true
}
defineExpose
({
open
})
// 提供 open 方法,用于打开弹窗
/** 提交表单 */
const
emit
=
defineEmits
([
'success'
])
// 定义 success 事件,用于操作成功后的回调
/** 创建分销员 */
const
submitForm
=
async
()
=>
{
if
(
formLoading
.
value
)
return
// 校验表单
if
(
!
formRef
)
return
const
valid
=
await
formRef
.
value
.
validate
()
if
(
!
valid
)
return
// 提交请求
formLoading
.
value
=
true
try
{
// 发起修改
await
BrokerageUserApi
.
createBrokerageUser
(
formData
.
value
)
message
.
success
(
t
(
'common.createSuccess'
))
dialogVisible
.
value
=
false
// 发送操作成功的事件
emit
(
'success'
)
}
finally
{
formLoading
.
value
=
false
}
}
/** 重置表单 */
const
resetForm
=
()
=>
{
formRef
.
value
?.
resetFields
()
formData
.
value
=
{
userId
:
undefined
,
bindUserId
:
undefined
,
brokerageEnabled
:
false
,
price
:
0
,
frozenPrice
:
0
}
userInfo
.
bindUser
=
undefined
userInfo
.
user
=
undefined
}
/** 查询推广员和分销员 */
const
userInfo
=
reactive
<
{
bindUser
:
BrokerageUserApi
.
BrokerageUserVO
|
undefined
user
:
BrokerageUserApi
.
BrokerageUserVO
|
undefined
}
>
({
bindUser
:
undefined
,
user
:
undefined
})
const
handleGetUser
=
async
(
id
:
any
,
userType
:
string
)
=>
{
if
(
!
id
)
{
message
.
warning
(
`请先输入
${
userType
}
编号后重试!!!`
)
return
}
if
(
userType
===
'推广员'
&&
formData
.
value
.
bindUserId
==
formData
.
value
.
userId
)
{
message
.
error
(
'不能绑定自己为推广人'
)
return
}
const
user
=
userType
===
'推广员'
?
await
BrokerageUserApi
.
getBrokerageUser
(
id
)
:
await
UserApi
.
getUser
(
id
)
userType
===
'推广员'
?
(
userInfo
.
bindUser
=
user
)
:
(
userInfo
.
user
=
user
)
if
(
!
user
)
{
message
.
warning
(
`
${
userType
}
不存在`
)
}
}
</
script
>
src/views/mall/trade/brokerage/user/index.vue
View file @
7ee8cb89
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment