|
|
@@ -174,6 +174,16 @@
|
|
|
></el-option>
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
|
+ <el-form-item label="会员等级">
|
|
|
+ <el-select v-model="editForm.memberLevel" clearable placeholder="选择会员等级" style="width: 100%">
|
|
|
+ <el-option
|
|
|
+ v-for="lv in memberLevelOptions"
|
|
|
+ :key="lv.levelCode"
|
|
|
+ :label="lv.levelName + '(' + lv.levelCode + ')'"
|
|
|
+ :value="lv.levelCode"
|
|
|
+ ></el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
<el-form-item label="角色">
|
|
|
<el-checkbox-group v-model="editForm.roles">
|
|
|
<el-checkbox
|
|
|
@@ -228,7 +238,7 @@
|
|
|
|
|
|
<script>
|
|
|
import SortMixin from '@/mixins/SortMixin'
|
|
|
-import { getUserList, updateUser, deleteUser, resetUserPassword, searchUsers } from '@/api/admin'
|
|
|
+import { getUserList, updateUser, deleteUser, resetUserPassword, searchUsers, listMembershipLevels } from '@/api/admin'
|
|
|
|
|
|
import { getRoleLabel } from '@/utils/permissions'
|
|
|
|
|
|
@@ -270,7 +280,8 @@ export default {
|
|
|
realName: '',
|
|
|
phone: '',
|
|
|
roles: [],
|
|
|
- referrerId: null
|
|
|
+ referrerId: null,
|
|
|
+ memberLevel: ''
|
|
|
},
|
|
|
editRules: {
|
|
|
nickname: [
|
|
|
@@ -290,10 +301,12 @@ export default {
|
|
|
],
|
|
|
userSearchResults: [],
|
|
|
userSearchLoading: false,
|
|
|
+ memberLevelOptions: [],
|
|
|
}
|
|
|
},
|
|
|
mounted() {
|
|
|
this.loadUsers()
|
|
|
+ this.loadMemberLevels()
|
|
|
},
|
|
|
methods: {
|
|
|
loadList() {
|
|
|
@@ -327,6 +340,15 @@ const res = await getUserList(params)
|
|
|
this.loading = false
|
|
|
}
|
|
|
},
|
|
|
+ async loadMemberLevels() {
|
|
|
+ try {
|
|
|
+ const res = await listMembershipLevels()
|
|
|
+ const list = res.data || []
|
|
|
+ this.memberLevelOptions = Array.isArray(list) ? list.filter(function(l) { return l && typeof l === 'object' && l.levelCode }) : []
|
|
|
+ } catch (e) {
|
|
|
+ this.memberLevelOptions = []
|
|
|
+ }
|
|
|
+ },
|
|
|
handleSearch() {
|
|
|
this.pagination.current = 1
|
|
|
this.loadUsers()
|
|
|
@@ -358,7 +380,8 @@ const res = await getUserList(params)
|
|
|
realName: row.realName || '',
|
|
|
phone: row.phone || '',
|
|
|
roles: row.roles ? [...row.roles] : (row.role ? [row.role] : []),
|
|
|
- referrerId: row.referrerId || null
|
|
|
+ referrerId: row.referrerId || null,
|
|
|
+ memberLevel: row.memberLevel || ''
|
|
|
}
|
|
|
this.editDialogVisible = true
|
|
|
},
|
|
|
@@ -447,11 +470,11 @@ const res = await getUserList(params)
|
|
|
return String(dateStr).replace('T', ' ').substring(0, 19)
|
|
|
},
|
|
|
memberLevelLabel(level) {
|
|
|
- const map = { FREE: '免费', FAMILY: '家庭会员', PROVIDER: '服务商' }
|
|
|
- return map[level] || '免费'
|
|
|
+ const map = { FREE: '免费会员', FAMILY: '家庭会员', PROVIDER: '标准会员', PREMIUM: '高级家庭会员', LIFETIME: '终身会员' }
|
|
|
+ return map[level] || '免费会员'
|
|
|
},
|
|
|
memberLevelType(level) {
|
|
|
- const map = { FREE: 'info', FAMILY: 'success', PROVIDER: 'warning' }
|
|
|
+ const map = { FREE: 'info', FAMILY: 'success', PROVIDER: 'warning', PREMIUM: 'primary', LIFETIME: 'danger' }
|
|
|
return map[level] || 'info'
|
|
|
},
|
|
|
async searchUsersForReferrer(query) {
|