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
231bdd1d
authored
Aug 19, 2024
by
puhui999
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
【新增】MALL: 会员列表增加修改余额操作
parent
b9c2d311
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
160 additions
and
25 deletions
+160
-25
src/views/member/user/components/UserBalanceUpdateForm.vue
+144
-0
src/views/member/user/components/UserLevelUpdateForm.vue
+0
-0
src/views/member/user/components/UserPointUpdateForm.vue
+8
-7
src/views/member/user/components/balance-list.vue
+0
-14
src/views/member/user/index.vue
+8
-4
No files found.
src/views/member/user/components/UserBalanceUpdateForm.vue
0 → 100644
View file @
231bdd1d
<
template
>
<Dialog
v-model=
"dialogVisible"
title=
"修改用户余额"
width=
"600"
>
<el-form
ref=
"formRef"
v-loading=
"formLoading"
:model=
"formData"
:rules=
"formRules"
label-width=
"130px"
>
<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=
"balance"
>
<el-input-number
v-model=
"formData.balance"
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=
"changeBalance"
>
<el-input-number
v-model=
"formData.changeBalance"
:min=
"0"
:precision=
"2"
:step=
"0.1"
class=
"!w-240px"
/>
</el-form-item>
<el-form-item
label=
"变动后余额(元)"
>
<el-input-number
v-model=
"balanceResult"
class=
"!w-240px"
disabled
/>
</el-form-item>
</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
UserApi
from
'@/api/member/user'
import
*
as
WalletApi
from
'@/api/pay/wallet/balance'
import
{
convertToInteger
,
formatToFraction
}
from
'@/utils'
/** 修改用户余额表单 */
defineOptions
({
name
:
'UpdateBalanceForm'
})
const
{
t
}
=
useI18n
()
// 国际化
const
message
=
useMessage
()
// 消息弹窗
const
dialogVisible
=
ref
(
false
)
// 弹窗的是否展示
const
formLoading
=
ref
(
false
)
// 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用
const
formData
=
ref
({
id
:
undefined
,
nickname
:
undefined
,
balance
:
'0'
,
changeBalance
:
0
,
changeType
:
1
})
const
formRules
=
reactive
({
changeBalance
:
[{
required
:
true
,
message
:
'变动余额不能为空'
,
trigger
:
'blur'
}]
})
const
formRef
=
ref
()
// 表单 Ref
/** 打开弹窗 */
const
open
=
async
(
id
?:
number
)
=>
{
dialogVisible
.
value
=
true
resetForm
()
// 修改时,设置数据
if
(
id
)
{
formLoading
.
value
=
true
try
{
const
user
=
await
UserApi
.
getUser
(
id
)
const
wallet
=
await
WalletApi
.
getWallet
({
userId
:
user
.
id
||
0
})
formData
.
value
.
id
=
user
.
id
formData
.
value
.
nickname
=
user
.
nickname
formData
.
value
.
balance
=
formatToFraction
(
wallet
.
balance
)
formData
.
value
.
changeType
=
1
// 默认增加余额
formData
.
value
.
changeBalance
=
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
.
changeBalance
<=
0
)
{
message
.
error
(
'变动余额不能为零'
)
return
}
if
(
convertToInteger
(
balanceResult
.
value
)
<
0
)
{
message
.
error
(
'变动后的余额不能小于 0'
)
return
}
// 提交请求
formLoading
.
value
=
true
try
{
await
UserApi
.
updateUserBalance
({
id
:
formData
.
value
.
id
,
balance
:
convertToInteger
(
balanceResult
.
value
)
})
message
.
success
(
t
(
'common.updateSuccess'
))
dialogVisible
.
value
=
false
// 发送操作成功的事件
emit
(
'success'
)
}
finally
{
formLoading
.
value
=
false
}
}
/** 重置表单 */
const
resetForm
=
()
=>
{
formData
.
value
=
{
id
:
undefined
,
nickname
:
undefined
,
balance
:
'0'
,
changeBalance
:
0
,
changeType
:
1
}
formRef
.
value
?.
resetFields
()
}
/** 变动后的余额 */
const
balanceResult
=
computed
(()
=>
formatToFraction
(
convertToInteger
(
formData
.
value
.
balance
)
+
convertToInteger
(
formData
.
value
.
changeBalance
)
*
formData
.
value
.
changeType
)
)
</
script
>
src/views/member/user/UserLevelUpdateForm.vue
→
src/views/member/user/
components/
UserLevelUpdateForm.vue
View file @
231bdd1d
File moved
src/views/member/user/UserPointUpdateForm.vue
→
src/views/member/user/
components/
UserPointUpdateForm.vue
View file @
231bdd1d
<
template
>
<
template
>
<Dialog
title=
"修改用户积分"
v-model=
"dialogVisible
"
width=
"600"
>
<Dialog
v-model=
"dialogVisible"
title=
"修改用户积分
"
width=
"600"
>
<el-form
<el-form
ref=
"formRef"
ref=
"formRef"
v-loading=
"formLoading"
:model=
"formData"
:model=
"formData"
:rules=
"formRules"
:rules=
"formRules"
label-width=
"100px"
label-width=
"100px"
v-loading=
"formLoading"
>
>
<el-form-item
label=
"用户编号"
prop=
"id"
>
<el-form-item
label=
"用户编号"
prop=
"id"
>
<el-input
v-model=
"formData.id"
class=
"!w-240px"
disabled
/>
<el-input
v-model=
"formData.id"
class=
"!w-240px"
disabled
/>
...
@@ -23,19 +23,19 @@
...
@@ -23,19 +23,19 @@
</el-radio-group>
</el-radio-group>
</el-form-item>
</el-form-item>
<el-form-item
label=
"变动积分"
prop=
"changePoint"
>
<el-form-item
label=
"变动积分"
prop=
"changePoint"
>
<el-input-number
v-model=
"formData.changePoint"
class=
"!w-240px"
:min=
"0"
:precision=
"0
"
/>
<el-input-number
v-model=
"formData.changePoint"
:min=
"0"
:precision=
"0"
class=
"!w-240px
"
/>
</el-form-item>
</el-form-item>
<el-form-item
label=
"变动后积分"
>
<el-form-item
label=
"变动后积分"
>
<el-input-number
v-model=
"pointResult"
class=
"!w-240px"
disabled
/>
<el-input-number
v-model=
"pointResult"
class=
"!w-240px"
disabled
/>
</el-form-item>
</el-form-item>
</el-form>
</el-form>
<template
#
footer
>
<template
#
footer
>
<el-button
@
click=
"submitForm"
type=
"primary"
:disabled=
"formLoading
"
>
确 定
</el-button>
<el-button
:disabled=
"formLoading"
type=
"primary"
@
click=
"submitForm
"
>
确 定
</el-button>
<el-button
@
click=
"dialogVisible = false"
>
取 消
</el-button>
<el-button
@
click=
"dialogVisible = false"
>
取 消
</el-button>
</
template
>
</
template
>
</Dialog>
</Dialog>
</template>
</template>
<
script
setup
lang=
"ts"
>
<
script
lang=
"ts"
setup
>
import
*
as
UserApi
from
'@/api/member/user'
import
*
as
UserApi
from
'@/api/member/user'
/** 修改用户积分表单 */
/** 修改用户积分表单 */
...
@@ -115,8 +115,9 @@ const resetForm = () => {
...
@@ -115,8 +115,9 @@ const resetForm = () => {
formData
.
value
=
{
formData
.
value
=
{
id
:
undefined
,
id
:
undefined
,
nickname
:
undefined
,
nickname
:
undefined
,
levelId
:
undefined
,
point
:
0
,
reason
:
undefined
changePoint
:
0
,
changeType
:
1
}
}
formRef
.
value
?.
resetFields
()
formRef
.
value
?.
resetFields
()
}
}
...
...
src/views/member/user/components/balance-list.vue
deleted
100644 → 0
View file @
b9c2d311
<
script
lang=
"ts"
>
import
{
defineComponent
}
from
'vue'
export
default
defineComponent
({
name
:
'BalanceList'
})
</
script
>
<!-- TODO @芋艿:未来实现,等周建的 -->
<
template
>
<div>
余额列表
</div>
</
template
>
<
style
scoped
lang=
"scss"
></
style
>
src/views/member/user/index.vue
View file @
231bdd1d
...
@@ -172,7 +172,7 @@
...
@@ -172,7 +172,7 @@
v-if=
"checkPermi(['member:user:update-balance'])"
v-if=
"checkPermi(['member:user:update-balance'])"
command=
"handleUpdateBlance"
command=
"handleUpdateBlance"
>
>
修改余额
(WIP)
修改余额
</el-dropdown-item>
</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown-menu>
</
template
>
</
template
>
...
@@ -196,6 +196,8 @@
...
@@ -196,6 +196,8 @@
<UserLevelUpdateForm
ref=
"updateLevelFormRef"
@
success=
"getList"
/>
<UserLevelUpdateForm
ref=
"updateLevelFormRef"
@
success=
"getList"
/>
<!-- 修改用户积分弹窗 -->
<!-- 修改用户积分弹窗 -->
<UserPointUpdateForm
ref=
"updatePointFormRef"
@
success=
"getList"
/>
<UserPointUpdateForm
ref=
"updatePointFormRef"
@
success=
"getList"
/>
<!-- 修改用户余额弹窗 -->
<UserBalanceUpdateForm
ref=
"UpdateBalanceFormRef"
@
success=
"getList"
/>
<!-- 发送优惠券弹窗 -->
<!-- 发送优惠券弹窗 -->
<CouponSendForm
ref=
"couponSendFormRef"
/>
<CouponSendForm
ref=
"couponSendFormRef"
/>
</template>
</template>
...
@@ -207,8 +209,9 @@ import UserForm from './UserForm.vue'
...
@@ -207,8 +209,9 @@ 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
UserLevelUpdateForm
from
'./UserLevelUpdateForm.vue'
import
UserLevelUpdateForm
from
'./components/UserLevelUpdateForm.vue'
import
UserPointUpdateForm
from
'./UserPointUpdateForm.vue'
import
UserPointUpdateForm
from
'./components/UserPointUpdateForm.vue'
import
UserBalanceUpdateForm
from
'./components/UserBalanceUpdateForm.vue'
import
{
CouponSendForm
}
from
'@/views/mall/promotion/coupon/components'
import
{
CouponSendForm
}
from
'@/views/mall/promotion/coupon/components'
import
{
checkPermi
}
from
'@/utils/permission'
import
{
checkPermi
}
from
'@/utils/permission'
...
@@ -233,6 +236,7 @@ const queryParams = reactive({
...
@@ -233,6 +236,7 @@ const queryParams = reactive({
const
queryFormRef
=
ref
()
// 搜索的表单
const
queryFormRef
=
ref
()
// 搜索的表单
const
updateLevelFormRef
=
ref
()
// 修改会员等级表单
const
updateLevelFormRef
=
ref
()
// 修改会员等级表单
const
updatePointFormRef
=
ref
()
// 修改会员积分表单
const
updatePointFormRef
=
ref
()
// 修改会员积分表单
const
UpdateBalanceFormRef
=
ref
()
// 修改用户余额表单
const
selectedIds
=
ref
<
number
[]
>
([])
// 表格的选中 ID 数组
const
selectedIds
=
ref
<
number
[]
>
([])
// 表格的选中 ID 数组
/** 查询列表 */
/** 查询列表 */
...
@@ -299,7 +303,7 @@ const handleCommand = (command: string, row: UserApi.UserVO) => {
...
@@ -299,7 +303,7 @@ const handleCommand = (command: string, row: UserApi.UserVO) => {
updatePointFormRef
.
value
.
open
(
row
.
id
)
updatePointFormRef
.
value
.
open
(
row
.
id
)
break
break
case
'handleUpdateBlance'
:
case
'handleUpdateBlance'
:
// todo @jason:增加一个【修改余额】
UpdateBalanceFormRef
.
value
.
open
(
row
.
id
)
break
break
default
:
default
:
break
break
...
...
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