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
Commit
4b7e57e6
authored
Sep 30, 2023
by
owen
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
会员详情,修改会员积分
parent
940a1025
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
208 additions
and
31 deletions
+208
-31
src/api/member/user/index.ts
+10
-0
src/views/member/user/UpdatePointForm.vue
+128
-0
src/views/member/user/components/growth-list.vue
+0
-14
src/views/member/user/index.vue
+70
-17
No files found.
src/api/member/user/index.ts
View file @
4b7e57e6
...
@@ -41,3 +41,13 @@ export const updateUser = async (data: UserVO) => {
...
@@ -41,3 +41,13 @@ export const updateUser = async (data: UserVO) => {
export
const
updateUserLevel
=
async
(
data
:
any
)
=>
{
export
const
updateUserLevel
=
async
(
data
:
any
)
=>
{
return
await
request
.
put
({
url
:
`/member/user/update-level`
,
data
})
return
await
request
.
put
({
url
:
`/member/user/update-level`
,
data
})
}
}
// 修改会员用户积分
export
const
updateUserPoint
=
async
(
data
:
any
)
=>
{
return
await
request
.
put
({
url
:
`/member/user/update-point`
,
data
})
}
// 修改会员用户余额
export
const
updateUserBalance
=
async
(
data
:
any
)
=>
{
return
await
request
.
put
({
url
:
`/member/user/update-balance`
,
data
})
}
src/views/member/user/UpdatePointForm.vue
0 → 100644
View file @
4b7e57e6
<
template
>
<Dialog
title=
"修改用户积分"
v-model=
"dialogVisible"
width=
"600"
>
<el-form
ref=
"formRef"
:model=
"formData"
:rules=
"formRules"
label-width=
"100px"
v-loading=
"formLoading"
>
<el-form-item
label=
"用户编号"
prop=
"id"
>
<el-input
v-model=
"formData.id"
class=
"!w-240px"
disabled
/>
</el-form-item>
<el-form-item
label=
"用户昵称"
prop=
"nickname"
>
<el-input
v-model=
"formData.nickname"
class=
"!w-240px"
disabled
/>
</el-form-item>
<el-form-item
label=
"变动前积分"
prop=
"point"
>
<el-input-number
v-model=
"formData.point"
class=
"!w-240px"
disabled
/>
</el-form-item>
<el-form-item
label=
"变动类型"
prop=
"changeType"
>
<el-radio-group
v-model=
"formData.changeType"
>
<el-radio
:label=
"1"
>
增加
</el-radio>
<el-radio
:label=
"-1"
>
减少
</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item
label=
"变动积分"
prop=
"changePoint"
>
<el-input-number
v-model=
"formData.changePoint"
class=
"!w-240px"
:min=
"0"
:precision=
"0"
/>
</el-form-item>
<el-form-item
label=
"变动后积分"
>
<el-input-number
v-model=
"pointResult"
class=
"!w-240px"
disabled
/>
</el-form-item>
</el-form>
<template
#
footer
>
<el-button
@
click=
"submitForm"
type=
"primary"
:disabled=
"formLoading"
>
确 定
</el-button>
<el-button
@
click=
"dialogVisible = false"
>
取 消
</el-button>
</
template
>
</Dialog>
</template>
<
script
setup
lang=
"ts"
>
import
*
as
UserApi
from
'@/api/member/user'
/** 修改用户积分表单 */
defineOptions
({
name
:
'UpdatePointForm'
})
const
{
t
}
=
useI18n
()
// 国际化
const
message
=
useMessage
()
// 消息弹窗
const
dialogVisible
=
ref
(
false
)
// 弹窗的是否展示
const
formLoading
=
ref
(
false
)
// 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用
const
formData
=
ref
({
id
:
undefined
,
nickname
:
undefined
,
point
:
0
,
changePoint
:
0
,
changeType
:
1
})
const
formRules
=
reactive
({
changePoint
:
[{
required
:
true
,
message
:
'变动积分不能为空'
,
trigger
:
'blur'
}]
})
const
formRef
=
ref
()
// 表单 Ref
/** 打开弹窗 */
const
open
=
async
(
id
?:
number
)
=>
{
dialogVisible
.
value
=
true
resetForm
()
// 修改时,设置数据
if
(
id
)
{
formLoading
.
value
=
true
try
{
formData
.
value
=
await
UserApi
.
getUser
(
id
)
formData
.
value
.
changeType
=
1
// 默认增加积分
formData
.
value
.
changePoint
=
0
// 变动积分默认0
}
finally
{
formLoading
.
value
=
false
}
}
}
defineExpose
({
open
})
// 提供 open 方法,用于打开弹窗
/** 提交表单 */
const
emit
=
defineEmits
([
'success'
])
// 定义 success 事件,用于操作成功后的回调
const
submitForm
=
async
()
=>
{
// 校验表单
if
(
!
formRef
)
return
const
valid
=
await
formRef
.
value
.
validate
()
if
(
!
valid
)
return
if
(
formData
.
value
.
changePoint
<
1
)
{
message
.
error
(
'变动积分不能小于 1'
)
return
}
if
(
pointResult
.
value
<
0
)
{
message
.
error
(
'变动后的积分不能小于 0'
)
return
}
// 提交请求
formLoading
.
value
=
true
try
{
await
UserApi
.
updateUserPoint
({
id
:
formData
.
value
.
id
,
point
:
formData
.
value
.
changePoint
*
formData
.
value
.
changeType
})
message
.
success
(
t
(
'common.updateSuccess'
))
dialogVisible
.
value
=
false
// 发送操作成功的事件
emit
(
'success'
)
}
finally
{
formLoading
.
value
=
false
}
}
/** 重置表单 */
const
resetForm
=
()
=>
{
formData
.
value
=
{
id
:
undefined
,
nickname
:
undefined
,
levelId
:
undefined
,
reason
:
undefined
}
formRef
.
value
?.
resetFields
()
}
/** 变动后的积分 */
const
pointResult
=
computed
(
()
=>
formData
.
value
.
point
+
formData
.
value
.
changePoint
*
formData
.
value
.
changeType
)
</
script
>
src/views/member/user/components/growth-list.vue
deleted
100644 → 0
View file @
940a1025
<
script
lang=
"ts"
>
import
{
defineComponent
}
from
'vue'
export
default
defineComponent
({
name
:
'GrowthList'
})
</
script
>
<!-- TODO @梦:可以读取 member_experience_log 表 -->
<
template
>
<div>
成长值列表
</div>
</
template
>
<
style
scoped
lang=
"scss"
></
style
>
src/views/member/user/index.vue
View file @
4b7e57e6
...
@@ -117,28 +117,56 @@
...
@@ -117,28 +117,56 @@
:formatter=
"dateFormatter"
:formatter=
"dateFormatter"
width=
"180px"
width=
"180px"
/>
/>
<el-table-column
label=
"操作"
align=
"center"
width=
"180px"
fixed=
"right"
>
<el-table-column
label=
"操作"
align=
"center"
width=
"100px"
fixed=
"right"
:show-overflow-tooltip=
"false"
>
<
template
#
default=
"scope"
>
<
template
#
default=
"scope"
>
<div
class=
"flex items-center justify-center"
>
<el-button
link
type=
"primary"
@
click=
"openDetail(scope.row.id)"
>
详情
</el-button>
<el-button
link
type=
"primary"
@
click=
"openDetail(scope.row.id)"
>
详情
</el-button>
<el-button
<el-dropdown
link
@
command=
"(command) => handleCommand(command, scope.row)"
type=
"primary"
v-hasPermi=
"[
@
click=
"openForm('update', scope.row.id)"
'member:user:update',
v-hasPermi=
"['member:user:update']"
'member:user:update-level',
'member:user:update-point',
'member:user:update-balance'
]"
>
<el-button
type=
"primary"
link
><Icon
icon=
"ep:d-arrow-right"
/>
更多
</el-button>
<template
#
dropdown
>
<el-dropdown-menu>
<el-dropdown-item
command=
"handleUpdate"
v-if=
"checkPermi(['member:user:update'])"
>
>
编辑
编辑
</el-button>
</el-dropdown-item>
<!-- todo @jason:增加一个【修改余额】 -->
<el-dropdown-item
<!-- todo @疯狂:增加一个【修改积分】,表单是:radio 增加/减少;input 具体的变化积分 -->
command=
"handleUpdateLevel"
<!-- todo 放到更多菜单中 -->
v-if=
"checkPermi(['member:user:update-level'])"
<el-button
link
type=
"primary"
@
click=
"updateLevelFormRef.open(scope.row.id)"
v-hasPermi=
"['member:user:update-level']"
>
>
修改等级
修改等级
</el-button>
</el-dropdown-item>
<el-dropdown-item
command=
"handleUpdatePoint"
v-if=
"checkPermi(['member:user:update-point'])"
>
修改积分
</el-dropdown-item>
<el-dropdown-item
command=
"handleUpdateBlance"
v-if=
"checkPermi(['member:user:update-balance'])"
>
修改余额(WIP)
</el-dropdown-item>
</el-dropdown-menu>
</
template
>
</el-dropdown>
</div>
</template>
</template>
</el-table-column>
</el-table-column>
</el-table>
</el-table>
...
@@ -155,6 +183,8 @@
...
@@ -155,6 +183,8 @@
<UserForm
ref=
"formRef"
@
success=
"getList"
/>
<UserForm
ref=
"formRef"
@
success=
"getList"
/>
<!-- 修改用户等级弹窗 -->
<!-- 修改用户等级弹窗 -->
<UpdateLevelForm
ref=
"updateLevelFormRef"
@
success=
"getList"
/>
<UpdateLevelForm
ref=
"updateLevelFormRef"
@
success=
"getList"
/>
<!-- 修改用户积分弹窗 -->
<UpdatePointForm
ref=
"updatePointFormRef"
@
success=
"getList"
/>
<!-- 发送优惠券弹窗 -->
<!-- 发送优惠券弹窗 -->
<CouponSendForm
ref=
"couponSendFormRef"
/>
<CouponSendForm
ref=
"couponSendFormRef"
/>
</template>
</template>
...
@@ -166,8 +196,10 @@ import UserForm from './UserForm.vue'
...
@@ -166,8 +196,10 @@ import UserForm from './UserForm.vue'
import
MemberTagSelect
from
'@/views/member/tag/components/MemberTagSelect.vue'
import
MemberTagSelect
from
'@/views/member/tag/components/MemberTagSelect.vue'
import
MemberLevelSelect
from
'@/views/member/level/components/MemberLevelSelect.vue'
import
MemberLevelSelect
from
'@/views/member/level/components/MemberLevelSelect.vue'
import
MemberGroupSelect
from
'@/views/member/group/components/MemberGroupSelect.vue'
import
MemberGroupSelect
from
'@/views/member/group/components/MemberGroupSelect.vue'
import
UpdateLevelForm
from
'@/views/member/user/UpdateLevelForm.vue'
import
UpdateLevelForm
from
'./UpdateLevelForm.vue'
import
UpdatePointForm
from
'./UpdatePointForm.vue'
import
CouponSendForm
from
'@/views/mall/promotion/coupon/components/CouponSendForm.vue'
import
CouponSendForm
from
'@/views/mall/promotion/coupon/components/CouponSendForm.vue'
import
{
checkPermi
}
from
'@/utils/permission'
defineOptions
({
name
:
'MemberUser'
})
defineOptions
({
name
:
'MemberUser'
})
...
@@ -189,6 +221,7 @@ const queryParams = reactive({
...
@@ -189,6 +221,7 @@ const queryParams = reactive({
})
})
const
queryFormRef
=
ref
()
// 搜索的表单
const
queryFormRef
=
ref
()
// 搜索的表单
const
updateLevelFormRef
=
ref
()
// 修改会员等级表单
const
updateLevelFormRef
=
ref
()
// 修改会员等级表单
const
updatePointFormRef
=
ref
()
// 修改会员积分表单
const
selectedIds
=
ref
<
number
[]
>
([])
// 表格的选中 ID 数组
const
selectedIds
=
ref
<
number
[]
>
([])
// 表格的选中 ID 数组
/** 查询列表 */
/** 查询列表 */
...
@@ -242,6 +275,26 @@ const openCoupon = () => {
...
@@ -242,6 +275,26 @@ const openCoupon = () => {
couponSendFormRef
.
value
.
open
(
selectedIds
.
value
)
couponSendFormRef
.
value
.
open
(
selectedIds
.
value
)
}
}
/** 操作分发 */
const
handleCommand
=
(
command
:
string
,
row
:
UserApi
.
UserVO
)
=>
{
switch
(
command
)
{
case
'handleUpdate'
:
openForm
(
'update'
,
row
.
id
)
break
case
'handleUpdateLevel'
:
updateLevelFormRef
.
value
.
open
(
row
.
id
)
break
case
'handleUpdatePoint'
:
updatePointFormRef
.
value
.
open
(
row
.
id
)
break
case
'handleUpdateBlance'
:
// todo @jason:增加一个【修改余额】
break
default
:
break
}
}
/** 初始化 **/
/** 初始化 **/
onMounted
(()
=>
{
onMounted
(()
=>
{
getList
()
getList
()
...
...
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