Skip to content

Commit 7bef240

Browse files
committed
会员:后台调整会员等级
1 parent f1735a4 commit 7bef240

File tree

4 files changed

+86
-13
lines changed

4 files changed

+86
-13
lines changed

src/api/member/level/index.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,11 @@ export const getLevel = async (id: number) => {
2121
return await request.get({ url: `/member/level/get?id=` + id })
2222
}
2323

24+
// 查询会员等级 - 精简信息列表
25+
export const getSimpleLevelList = async () => {
26+
return await request.get({ url: `/member/level/list-all-simple` })
27+
}
28+
2429
// 新增会员等级
2530
export const createLevel = async (data: LevelVO) => {
2631
return await request.post({ url: `/member/level/create`, data })
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
<template>
2+
<el-select v-model="levelId" placeholder="请选择用户等级" clearable class="!w-240px">
3+
<el-option
4+
v-for="level in levelOptions"
5+
:key="level.id"
6+
:label="level.name"
7+
:value="level.id"
8+
/>
9+
</el-select>
10+
</template>
11+
12+
<script lang="ts" setup>
13+
import * as LevelApi from '@/api/member/level'
14+
15+
/** 会员等级选择框 **/
16+
defineOptions({ name: 'MemberLevelSelect' })
17+
18+
const props = defineProps({
19+
/** 下拉框选中值 **/
20+
modelValue: {
21+
type: Array,
22+
default: undefined
23+
}
24+
})
25+
const emit = defineEmits(['update:modelValue'])
26+
27+
const levelId = computed({
28+
get() {
29+
return props.modelValue
30+
},
31+
set(value: any) {
32+
emit('update:modelValue', value)
33+
}
34+
})
35+
36+
const levelOptions = ref<LevelApi.LevelVO[]>([])
37+
38+
const getList = async () => {
39+
levelOptions.value = await LevelApi.getSimpleLevelList()
40+
}
41+
42+
/** 初始化 */
43+
onMounted(() => {
44+
getList()
45+
})
46+
</script>

src/views/member/user/UserForm.vue

Lines changed: 28 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,22 @@
6060
<el-form-item label="用户标签" prop="tagIds">
6161
<MemberTagSelect v-model="formData.tagIds" show-add />
6262
</el-form-item>
63+
<el-row>
64+
<el-col :span="12">
65+
<el-form-item label="用户等级" prop="levelId">
66+
<MemberLevelSelect v-model="formData.levelId" />
67+
</el-form-item>
68+
</el-col>
69+
<el-col :span="12">
70+
<el-form-item
71+
label="修改原因"
72+
prop="levelReason"
73+
v-if="formData.levelId != originLevelId"
74+
>
75+
<el-input type="text" v-model="formData.levelReason" placeholder="请输入修改原因" />
76+
</el-form-item>
77+
</el-col>
78+
</el-row>
6379
<el-form-item label="会员备注" prop="mark">
6480
<el-input type="textarea" v-model="formData.mark" placeholder="请输入会员备注" />
6581
</el-form-item>
@@ -76,6 +92,7 @@ import * as UserApi from '@/api/member/user'
7692
import * as AreaApi from '@/api/system/area'
7793
import { defaultProps } from '@/utils/tree'
7894
import MemberTagSelect from '@/views/member/tag/components/MemberTagSelect.vue'
95+
import MemberLevelSelect from '@/views/member/level/components/MemberLevelSelect.vue'
7996
8097
const { t } = useI18n() // 国际化
8198
const message = useMessage() // 消息弹窗
@@ -87,6 +104,7 @@ const formType = ref('') // 表单的类型:create - 新增;update - 修改
87104
const formData = ref({
88105
id: undefined,
89106
mobile: undefined,
107+
password: undefined,
90108
status: undefined,
91109
nickname: undefined,
92110
avatar: undefined,
@@ -95,14 +113,18 @@ const formData = ref({
95113
areaId: undefined,
96114
birthday: undefined,
97115
mark: undefined,
98-
tagIds: []
116+
tagIds: [],
117+
levelId: undefined,
118+
levelReason: undefined
99119
})
100120
const formRules = reactive({
101121
mobile: [{ required: true, message: '手机号不能为空', trigger: 'blur' }],
102-
status: [{ required: true, message: '状态不能为空', trigger: 'blur' }]
122+
status: [{ required: true, message: '状态不能为空', trigger: 'blur' }],
123+
levelReason: [{ required: true, message: '修改原因不能为空', trigger: 'blur' }]
103124
})
104125
const formRef = ref() // 表单 Ref
105126
const areaList = ref([]) // 地区列表
127+
const originLevelId = ref() // 修改前的会员等级
106128
107129
/** 打开弹窗 */
108130
const open = async (type: string, id?: number) => {
@@ -115,6 +137,7 @@ const open = async (type: string, id?: number) => {
115137
formLoading.value = true
116138
try {
117139
formData.value = await UserApi.getUser(id)
140+
originLevelId.value = formData.value.levelId
118141
} finally {
119142
formLoading.value = false
120143
}
@@ -158,18 +181,16 @@ const resetForm = () => {
158181
mobile: undefined,
159182
password: undefined,
160183
status: undefined,
161-
registerIp: undefined,
162-
loginIp: undefined,
163-
loginDate: undefined,
164184
nickname: undefined,
165185
avatar: undefined,
166186
name: undefined,
167187
sex: undefined,
168188
areaId: undefined,
169189
birthday: undefined,
170190
mark: undefined,
171-
createTime: undefined,
172-
tagIds: []
191+
tagIds: [],
192+
levelId: undefined,
193+
levelReason: undefined
173194
}
174195
formRef.value?.resetFields()
175196
}

src/views/member/user/index.vue

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,9 @@
5151
<el-form-item label="用户标签" prop="tagIds">
5252
<MemberTagSelect v-model="queryParams.tagIds" />
5353
</el-form-item>
54+
<el-form-item label="用户等级" prop="levelId">
55+
<MemberLevelSelect v-model="queryParams.levelId" />
56+
</el-form-item>
5457
<el-form-item>
5558
<el-button @click="handleQuery"><Icon icon="ep:search" class="mr-5px" /> 搜索</el-button>
5659
<el-button @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" /> 重置</el-button>
@@ -69,8 +72,8 @@
6972
</el-table-column>
7073
<el-table-column label="手机号" align="center" prop="mobile" width="120px" />
7174
<el-table-column label="昵称" align="center" prop="nickname" width="80px" />
75+
<el-table-column label="等级" align="center" prop="levelName" width="100px" />
7276
<!-- TODO 芋艿:待接入 -->
73-
<el-table-column label="等级" align="center" width="100px" />
7477
<el-table-column label="分组" align="center" width="100px" />
7578
<el-table-column
7679
label="用户标签"
@@ -133,12 +136,10 @@ import * as UserApi from '@/api/member/user'
133136
import UserForm from './UserForm.vue'
134137
import { DICT_TYPE } from '@/utils/dict'
135138
import MemberTagSelect from '@/views/member/tag/components/MemberTagSelect.vue'
139+
import MemberLevelSelect from '@/views/member/level/components/MemberLevelSelect.vue'
136140
137141
defineOptions({ name: 'MemberUser' })
138142
139-
const message = useMessage() // 消息弹窗
140-
const { t } = useI18n() // 国际化
141-
142143
const loading = ref(true) // 列表的加载中
143144
const total = ref(0) // 列表的总页数
144145
const list = ref([]) // 列表的数据
@@ -149,10 +150,10 @@ const queryParams = reactive({
149150
mobile: null,
150151
loginDate: [],
151152
createTime: [],
152-
tagIds: []
153+
tagIds: [],
154+
levelId: null
153155
})
154156
const queryFormRef = ref() // 搜索的表单
155-
const exportLoading = ref(false) // 导出的加载中
156157
157158
/** 查询列表 */
158159
const getList = async () => {

0 commit comments

Comments
 (0)