Browse Source

feat: 引入会员等级存储,优化头像展示逻辑,调整用户信息类型

EvilDragon 3 months ago
parent
commit
bde411b802

+ 5 - 3
packages/app/src/components/moment-item.vue

@@ -10,7 +10,7 @@ import { likeActived, likeBlack } from '@designer-hub/assets/src/icons'
 import { NetImages } from '../core/libs/net-images'
 import { currRoute } from '../utils'
 import { usePermissions } from '../composables/permissions'
-import { levelsByLevel } from '../core/libs/levels'
+import { useMemberLevelsStore } from '../store/member-levles'
 
 const props = withDefaults(
   defineProps<{
@@ -45,6 +45,8 @@ const props = withDefaults(
 const emits = defineEmits<{ delete: [id: number]; like: [options: any] }>()
 const router = useRouter()
 const { features } = usePermissions()
+const memberLevelsStore = useMemberLevelsStore()
+const { getMemberLevelLogo } = memberLevelsStore
 const imgClass = ref('')
 const isVideo = ref(false)
 const toDetail = () => {
@@ -101,11 +103,11 @@ onMounted(async () => {
           />
         </view>
         <view class="">{{ props.options.stylistName || props.options.marketing }}</view>
-        <template v-if="levelsByLevel[options?.levelId]?.badge">
+        <template v-if="getMemberLevelLogo(options?.levelId)">
           <wd-img
             width="63"
             height="18.6"
-            :src="levelsByLevel[options?.levelId]?.badge || ''"
+            :src="getMemberLevelLogo(options?.levelId) || ''"
           ></wd-img>
         </template>
         <view class="flex-1"></view>

+ 2 - 0
packages/app/src/core/libs/requests.ts

@@ -24,6 +24,7 @@ import {
   ActivitySignUp,
 } from './models'
 import dayjs from 'dayjs'
+import { log } from 'console'
 
 export const getUserInfo = () =>
   httpGetMock<any>({
@@ -867,6 +868,7 @@ export const getAppMemberLevelConfigs = () =>
       associatedMemberRightsName: string
       status: number
       createTime: string
+      logo: string
       setMemberRights: {
         createTime: string
         updateTime: string

+ 2 - 2
packages/app/src/pages/mine/index.vue

@@ -256,8 +256,8 @@ onPageScroll(({ scrollTop }: { scrollTop: number }) => {
             >
               {{ !isLogined ? '请点击登录' : userInfo?.nickname }}
             </div>
-            <div>
-              <div class="w-[76px] h-6 relative">
+            <div v-if="isCertified">
+              <div class="w-[76px] h-6 relative" @click="router.push('/pages/mine/honors/index')">
                 <div
                   class="w-[76px] h-[18px] left-3 pl-1 top-[1.5px] absolute bg-[#4f4b42] rounded-[3px] border border-solid border-[#a89f89]"
                 >

+ 20 - 0
packages/app/src/store/member-levles.ts

@@ -0,0 +1,20 @@
+import { getAppMemberLevelConfigs } from '../core/libs/requests'
+import { defineStore } from 'pinia'
+
+export const useMemberLevelsStore = defineStore('', () => {
+  //   const memberLevels = ref([])
+  //   const fetchMemberLevels = async () => {
+  const { data: memberLevels, run: fetchMemberLevels } = useRequest(
+    () => getAppMemberLevelConfigs(),
+    { initialData: [] },
+  )
+  const memberLevelsById = (id: number) => memberLevels.value.find((item) => item.id === id)
+  const getMemberLevelLogo = (id: number) => memberLevelsById(id)?.logo
+  fetchMemberLevels()
+  return {
+    memberLevels,
+    fetchMemberLevels,
+    memberLevelsById,
+    getMemberLevelLogo,
+  }
+})

+ 1 - 1
packages/app/src/typings.ts

@@ -31,7 +31,7 @@ type IUserInfo = {
   point?: number
   level?: { cardCode: string; icon: string; level: number; name: string; point: number }
   userAuthStatus?: 0 | 1 | 2
-  mobile: string
+  mobile?: string
 }
 
 enum TestEnum {