diff --git a/admin/src/api/config.ts b/admin/src/api/config.ts index 54104cc..8c67251 100644 --- a/admin/src/api/config.ts +++ b/admin/src/api/config.ts @@ -112,6 +112,7 @@ export interface MemberIconsConfig { unlimitedMemberIcon?: string sincereMemberIcon?: string familyMemberIcon?: string + timeLimitedMemberIcon?: string } /** diff --git a/admin/src/api/memberTier.ts b/admin/src/api/memberTier.ts index 933da94..ca91e51 100644 --- a/admin/src/api/memberTier.ts +++ b/admin/src/api/memberTier.ts @@ -65,3 +65,17 @@ export function updateMemberTier(id: number, data: UpdateMemberTierRequest) { export function deleteMemberTier(id: number) { return request.delete(`/admin/memberTiers/${id}`) } + +/** + * 获取默认选中会员等级 + */ +export function getDefaultTierLevel() { + return request.get('/admin/memberTiers/defaultLevel') +} + +/** + * 设置默认选中会员等级 + */ +export function setDefaultTierLevel(level: number) { + return request.put('/admin/memberTiers/defaultLevel', { level }) +} diff --git a/admin/src/types/user.d.ts b/admin/src/types/user.d.ts index 529a14a..018e24c 100644 --- a/admin/src/types/user.d.ts +++ b/admin/src/types/user.d.ts @@ -68,6 +68,7 @@ export interface UserQueryParams { registerEndTime?: string gender?: number city?: string + isTestUser?: boolean } /** @@ -94,6 +95,7 @@ export interface UserListItem { contactCount: number createTime: string lastLoginTime: string + isTestUser: boolean } /** diff --git a/admin/src/views/content/memberTier.vue b/admin/src/views/content/memberTier.vue index 5dc08eb..893659d 100644 --- a/admin/src/views/content/memberTier.vue +++ b/admin/src/views/content/memberTier.vue @@ -30,6 +30,9 @@ {{ tier.status === 1 ? '启用' : '禁用' }} + + 默认选中 + @@ -70,6 +73,15 @@
+ + 设为默认 + 编辑 @@ -220,6 +232,8 @@ import { createMemberTier, updateMemberTier, deleteMemberTier, + getDefaultTierLevel, + setDefaultTierLevel, type MemberTier } from '@/api/memberTier' import { useUserStore } from '@/stores/user' @@ -235,6 +249,7 @@ const isEdit = ref(false) const submitting = ref(false) const formRef = ref() const editingId = ref(null) +const defaultLevel = ref(null) const formData = reactive({ level: 1, @@ -270,8 +285,12 @@ const getFullUrl = (url: string) => { const loadList = async () => { loading.value = true try { - const res: any = await getMemberTierList() + const [res, defaultRes]: any[] = await Promise.all([ + getMemberTierList(), + getDefaultTierLevel() + ]) tierList.value = res || [] + defaultLevel.value = defaultRes ?? null } catch (error) { console.error('加载列表失败:', error) } finally { @@ -332,6 +351,16 @@ const handleDelete = async (row: MemberTier) => { } } +const handleSetDefault = async (tier: MemberTier) => { + try { + await setDefaultTierLevel(tier.level) + defaultLevel.value = tier.level + ElMessage.success(`已设置「${tier.name}」为默认选中`) + } catch (error) { + console.error('设置默认失败:', error) + } +} + const handleUploadSuccess = (response: any) => { if (response.code === 0 && response.data) { formData.benefitsImage = response.data.url @@ -575,11 +604,10 @@ onMounted(() => { /* 排序标识 */ .tier-sort { - position: absolute; - bottom: 8px; - right: 12px; + text-align: right; font-size: 11px; color: #c0c4cc; + margin-top: 10px; } /* 弹窗样式 */ diff --git a/admin/src/views/system/config.vue b/admin/src/views/system/config.vue index 34f8dbf..8a8b6ee 100644 --- a/admin/src/views/system/config.vue +++ b/admin/src/views/system/config.vue @@ -147,6 +147,28 @@
+ +
+ + + + +
+

建议尺寸:64x64像素

+

支持格式:PNG(透明背景)

+

限时会员用户显示的图标

+
+
+
+