Browse Source

refactor(app): 优化首页和商城页面功能

- 优化首页轮播图组件,增加 swiperList 长度判断- 更新商城页面布局和样式- 修复个人中心积分记录时间显示格式
- 优化个人中心扫描功能错误处理
- 更新产品分类和产品列表请求方式
EvilDragon 4 months ago
parent
commit
828a09d3bb

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

@@ -312,7 +312,7 @@ export const getContent = (query: { id: string }) =>
 export const getProductCategories = () =>
   httpGet<Category[]>('/app-api/member/product-type/getAllProductCategories', {})
 export const getProducts = (query: { oneCategory?: string; secondCategory?: string }) =>
-  httpPost<{
+  httpGet<{
     list: {
       prodcutName: string
       productId: string
@@ -326,7 +326,7 @@ export const getProducts = (query: { oneCategory?: string; secondCategory?: stri
       oneCategory: any
       secondCategory: string
     }[]
-  }>('/app-api/member/product/page', {}, query)
+  }>('/app-api/member/product/page', query)
 export const getProduct = (id: string) =>
   httpGet<{
     id: number

+ 1 - 1
packages/app/src/pages/home/components/banner.vue

@@ -32,7 +32,7 @@ onMounted(() => {
 })
 </script>
 <template>
-  <div>
+  <div v-if="swiperList.length">
     <wd-swiper
       custom-class="rounded-2xl overflow-hidden aspect-[2.71/1]"
       :custom-style="`aspect-ratio: ${props.aspect ?? '2.71/1'}`"

+ 4 - 3
packages/app/src/pages/home/index.vue

@@ -18,12 +18,13 @@ import Menus from './components/menus.vue'
 import { getCircles, getSetIndexConfigs } from '../../core/libs/requests'
 import { logo } from '../../core/libs/svgs'
 import PageHelper from '@/components/page-helper.vue'
+import { ComponentExposed } from 'vue-component-type-helpers'
 
 defineOptions({
   name: 'Home',
 })
 const instance = getCurrentInstance()
-const { data: circlesData, run } = useRequest(() => getCircles({}), { initialData: { list: [] } })
+const pageHelperRef = ref<ComponentExposed<typeof PageHelper>>()
 const { data: indexConfigsData, run: setIndexConfigsData } = useRequest(
   () => getSetIndexConfigs(),
   { initialData: { list: [] } },
@@ -32,7 +33,7 @@ const swiperData = ref<{ data: any; videoContext: UniNamespace.VideoContext; pla
 const swiperCurrent = ref(0)
 
 onShow(async () => {
-  await run()
+  pageHelperRef.value?.refresh()
 })
 onLoad(async () => {
   await setIndexConfigsData()
@@ -116,7 +117,7 @@ onShareAppMessage(() => ({}))
       </view>
       <view class="mx-3.5 text-5 font-400">设计圈</view>
       <view class="mx-3.5">
-        <PageHelper :request="getCircles" :query="{}">
+        <PageHelper ref="pageHelperRef" :request="getCircles" :query="{}">
           <template #default="{ source }">
             <template v-for="it of source.list" :key="it.id">
               <view class="my-6">

+ 8 - 8
packages/app/src/pages/home/mall/index.vue

@@ -22,7 +22,7 @@ import PageHelper from '@/components/page-helper.vue'
 import { BannerMode } from '../../../core/libs/models'
 import Banner from '../components/banner.vue'
 import BottomAppBar from '@/components/bottom-app-bar.vue'
-import { useUserStore } from '@/store'
+import { useUserStore } from '../../../store'
 import { storeToRefs } from 'pinia'
 
 const router = useRouter()
@@ -91,14 +91,14 @@ onMounted(async () => {
       <!-- </wd-skeleton> -->
     </PageHelper>
     <BottomAppBar fixed>
-      <div class="h-16 bg-white flex items-center justify-between px-7">
-        <div>
-          <!-- <wd-button type="text" size="small"> -->
-          <wd-img :round="false" width="32" height="32" :src="shoppingBag"></wd-img>
-          <!-- </wd-button> -->
-        </div>
+      <div class="h-16 bg-white flex items-center justify-between px-3.5">
+        <!-- <div> -->
+        <!-- <wd-button type="text" size="small"> -->
+        <wd-img :round="false" width="32" height="32" :src="shoppingBag"></wd-img>
+        <!-- </wd-button> -->
+        <!-- </div> -->
         <div @click="router.push('/pages/home/mall/shopping-cart/index')">
-          <TiltedButton custom-class="text-center! items-center">
+          <TiltedButton custom-class="text-center! items-center" size="large">
             <span
               class="h-[22px] text-white text-base font-normal font-['PingFang_SC'] leading-tight"
             >

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

@@ -174,11 +174,12 @@ const handleClickScan = async () => {
       await storeAndPunchIn({ id: options.id })
       router.push(`/pages/mine/scan/result/index?result=${result}`)
     } catch (e) {
-      console.log(e)
-      if (e.code === 10000) {
+      if (e.code === 1000) {
         router.push(
           `/pages/mine/scan/result/index?result=${toQrCodeString(type, { name: options.name, desc: e.msg })}`,
         )
+      } else {
+        uni.showToast({ title: e.msg, icon: 'none' })
       }
     }
     return

+ 1 - 1
packages/app/src/pages/mine/points/index.vue

@@ -69,7 +69,7 @@ const { userInfo } = storeToRefs(userStore)
                       class="text-black/40 text-sm font-normal font-['PingFang_SC'] leading-relaxed"
                     >
                       <!-- 2024/08/10 14:21:54 -->
-                      {{ dayjs(it.createTime).format('YYYY/MM/DD hh:mm:ss') }}
+                      {{ dayjs(it.createTime).format('YYYY/MM/DD HH:mm:ss') }}
                     </div>
                   </div>
                   <div>