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
51738f8f
authored
Aug 22, 2023
by
owen
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
会员: 修改会员等级,使用单独的表单、接口
parent
c5a703f4
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
121 additions
and
26 deletions
+121
-26
src/api/member/user/index.ts
+5
-0
src/views/member/user/UpdateLevelForm.vue
+101
-0
src/views/member/user/UserForm.vue
+1
-25
src/views/member/user/index.vue
+14
-1
No files found.
src/api/member/user/index.ts
View file @
51738f8f
...
@@ -32,3 +32,8 @@ export const getUser = async (id: number) => {
...
@@ -32,3 +32,8 @@ export const getUser = async (id: number) => {
export
const
updateUser
=
async
(
data
:
UserVO
)
=>
{
export
const
updateUser
=
async
(
data
:
UserVO
)
=>
{
return
await
request
.
put
({
url
:
`/member/user/update`
,
data
})
return
await
request
.
put
({
url
:
`/member/user/update`
,
data
})
}
}
// 修改会员用户等级
export
const
updateUserLevel
=
async
(
data
:
any
)
=>
{
return
await
request
.
put
({
url
:
`/member/user/update-level`
,
data
})
}
src/views/member/user/UpdateLevelForm.vue
0 → 100644
View file @
51738f8f
<
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"
placeholder=
"请输入用户昵称"
class=
"!w-240px"
disabled
/>
</el-form-item>
<el-form-item
label=
"用户昵称"
prop=
"nickname"
>
<el-input
v-model=
"formData.nickname"
placeholder=
"请输入用户昵称"
class=
"!w-240px"
disabled
/>
</el-form-item>
<el-form-item
label=
"用户等级"
prop=
"levelId"
>
<MemberLevelSelect
v-model=
"formData.levelId"
/>
</el-form-item>
<el-form-item
label=
"修改原因"
prop=
"reason"
>
<el-input
type=
"textarea"
v-model=
"formData.reason"
placeholder=
"请输入修改原因"
/>
</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'
import
MemberLevelSelect
from
'@/views/member/level/components/MemberLevelSelect.vue'
const
{
t
}
=
useI18n
()
// 国际化
const
message
=
useMessage
()
// 消息弹窗
const
dialogVisible
=
ref
(
false
)
// 弹窗的是否展示
const
formLoading
=
ref
(
false
)
// 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用
const
formData
=
ref
({
id
:
undefined
,
nickname
:
undefined
,
levelId
:
undefined
,
reason
:
undefined
})
const
formRules
=
reactive
({
reason
:
[{
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
)
}
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
// 提交请求
formLoading
.
value
=
true
try
{
await
UserApi
.
updateUserLevel
(
formData
.
value
)
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
()
}
</
script
>
src/views/member/user/UserForm.vue
View file @
51738f8f
...
@@ -60,22 +60,6 @@
...
@@ -60,22 +60,6 @@
<el-form-item
label=
"用户标签"
prop=
"tagIds"
>
<el-form-item
label=
"用户标签"
prop=
"tagIds"
>
<MemberTagSelect
v-model=
"formData.tagIds"
show-add
/>
<MemberTagSelect
v-model=
"formData.tagIds"
show-add
/>
</el-form-item>
</el-form-item>
<el-row>
<el-col
:span=
"12"
>
<el-form-item
label=
"用户等级"
prop=
"levelId"
>
<MemberLevelSelect
v-model=
"formData.levelId"
/>
</el-form-item>
</el-col>
<el-col
:span=
"12"
>
<el-form-item
label=
"修改原因"
prop=
"levelReason"
v-if=
"formData.levelId != originLevelId"
>
<el-input
type=
"text"
v-model=
"formData.levelReason"
placeholder=
"请输入修改原因"
/>
</el-form-item>
</el-col>
</el-row>
<el-form-item
label=
"用户分组"
prop=
"groupId"
>
<el-form-item
label=
"用户分组"
prop=
"groupId"
>
<MemberGroupSelect
v-model=
"formData.groupId"
/>
<MemberGroupSelect
v-model=
"formData.groupId"
/>
</el-form-item>
</el-form-item>
...
@@ -95,7 +79,6 @@ import * as UserApi from '@/api/member/user'
...
@@ -95,7 +79,6 @@ import * as UserApi from '@/api/member/user'
import
*
as
AreaApi
from
'@/api/system/area'
import
*
as
AreaApi
from
'@/api/system/area'
import
{
defaultProps
}
from
'@/utils/tree'
import
{
defaultProps
}
from
'@/utils/tree'
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
MemberGroupSelect
from
'@/views/member/group/components/MemberGroupSelect.vue'
import
MemberGroupSelect
from
'@/views/member/group/components/MemberGroupSelect.vue'
const
{
t
}
=
useI18n
()
// 国际化
const
{
t
}
=
useI18n
()
// 国际化
...
@@ -118,18 +101,14 @@ const formData = ref({
...
@@ -118,18 +101,14 @@ const formData = ref({
birthday
:
undefined
,
birthday
:
undefined
,
mark
:
undefined
,
mark
:
undefined
,
tagIds
:
[],
tagIds
:
[],
levelId
:
undefined
,
levelReason
:
undefined
,
groupId
:
undefined
groupId
:
undefined
})
})
const
formRules
=
reactive
({
const
formRules
=
reactive
({
mobile
:
[{
required
:
true
,
message
:
'手机号不能为空'
,
trigger
:
'blur'
}],
mobile
:
[{
required
:
true
,
message
:
'手机号不能为空'
,
trigger
:
'blur'
}],
status
:
[{
required
:
true
,
message
:
'状态不能为空'
,
trigger
:
'blur'
}],
status
:
[{
required
:
true
,
message
:
'状态不能为空'
,
trigger
:
'blur'
}]
levelReason
:
[{
required
:
true
,
message
:
'修改原因不能为空'
,
trigger
:
'blur'
}]
})
})
const
formRef
=
ref
()
// 表单 Ref
const
formRef
=
ref
()
// 表单 Ref
const
areaList
=
ref
([])
// 地区列表
const
areaList
=
ref
([])
// 地区列表
const
originLevelId
=
ref
()
// 修改前的会员等级
/** 打开弹窗 */
/** 打开弹窗 */
const
open
=
async
(
type
:
string
,
id
?:
number
)
=>
{
const
open
=
async
(
type
:
string
,
id
?:
number
)
=>
{
...
@@ -142,7 +121,6 @@ const open = async (type: string, id?: number) => {
...
@@ -142,7 +121,6 @@ const open = async (type: string, id?: number) => {
formLoading
.
value
=
true
formLoading
.
value
=
true
try
{
try
{
formData
.
value
=
await
UserApi
.
getUser
(
id
)
formData
.
value
=
await
UserApi
.
getUser
(
id
)
originLevelId
.
value
=
formData
.
value
.
levelId
}
finally
{
}
finally
{
formLoading
.
value
=
false
formLoading
.
value
=
false
}
}
...
@@ -194,8 +172,6 @@ const resetForm = () => {
...
@@ -194,8 +172,6 @@ const resetForm = () => {
birthday
:
undefined
,
birthday
:
undefined
,
mark
:
undefined
,
mark
:
undefined
,
tagIds
:
[],
tagIds
:
[],
levelId
:
undefined
,
levelReason
:
undefined
,
groupId
:
undefined
groupId
:
undefined
}
}
formRef
.
value
?.
resetFields
()
formRef
.
value
?.
resetFields
()
...
...
src/views/member/user/index.vue
View file @
51738f8f
...
@@ -107,7 +107,7 @@
...
@@ -107,7 +107,7 @@
:formatter=
"dateFormatter"
:formatter=
"dateFormatter"
width=
"180px"
width=
"180px"
/>
/>
<el-table-column
label=
"操作"
align=
"center"
>
<el-table-column
label=
"操作"
align=
"center"
width=
"140px"
fixed=
"right"
>
<
template
#
default=
"scope"
>
<
template
#
default=
"scope"
>
<el-button
<el-button
link
link
...
@@ -117,6 +117,15 @@
...
@@ -117,6 +117,15 @@
>
>
编辑
编辑
</el-button>
</el-button>
<!-- todo 放到更多菜单中 -->
<el-button
link
type=
"primary"
@
click=
"updateLevelFormRef.open(scope.row.id)"
v-hasPermi=
"['member:user:update-level']"
>
修改等级
</el-button>
</
template
>
</
template
>
</el-table-column>
</el-table-column>
</el-table>
</el-table>
...
@@ -131,6 +140,8 @@
...
@@ -131,6 +140,8 @@
<!-- 表单弹窗:添加/修改 -->
<!-- 表单弹窗:添加/修改 -->
<UserForm
ref=
"formRef"
@
success=
"getList"
/>
<UserForm
ref=
"formRef"
@
success=
"getList"
/>
<!-- 修改用户等级弹窗 -->
<UpdateLevelForm
ref=
"updateLevelFormRef"
@
success=
"getList"
/>
</template>
</template>
<
script
setup
lang=
"ts"
>
<
script
setup
lang=
"ts"
>
import
{
dateFormatter
}
from
'@/utils/formatTime'
import
{
dateFormatter
}
from
'@/utils/formatTime'
...
@@ -140,6 +151,7 @@ import { DICT_TYPE } from '@/utils/dict'
...
@@ -140,6 +151,7 @@ import { DICT_TYPE } from '@/utils/dict'
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'
defineOptions
({
name
:
'MemberUser'
})
defineOptions
({
name
:
'MemberUser'
})
...
@@ -158,6 +170,7 @@ const queryParams = reactive({
...
@@ -158,6 +170,7 @@ const queryParams = reactive({
groupId
:
null
groupId
:
null
})
})
const
queryFormRef
=
ref
()
// 搜索的表单
const
queryFormRef
=
ref
()
// 搜索的表单
const
updateLevelFormRef
=
ref
()
// 修改会员等级表单
/** 查询列表 */
/** 查询列表 */
const
getList
=
async
()
=>
{
const
getList
=
async
()
=>
{
...
...
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