Jelajahi Sumber

feat(navbar): 更新导航栏组件以支持动态插槽并优化结构

EvilDragon 3 bulan lalu
induk
melakukan
ee096233d1

+ 29 - 49
packages/app/src/components/navbar-evo.vue

@@ -3,16 +3,19 @@ import { ConfigProviderThemeVars } from 'wot-design-uni'
 import { useRouter } from '../core/utils/router'
 import { computed } from 'vue'
 
-const props = defineProps<{
-  transparent?: boolean
-  title?: string
-  dark?: boolean
-  placeholder?: boolean
-}>()
+const props = withDefaults(
+  defineProps<{
+    transparent?: boolean
+    title?: string
+    dark?: boolean
+    placeholder?: boolean
+  }>(),
+  {},
+)
 const slots = defineSlots<{
-  // default(props: { data: Ref<S>[]; source: T }): any
   prepend(): any
 }>()
+const aa = computed(() => (slots.prepend ? 'left' : 'capsule'))
 const router = useRouter()
 const pages = computed(() => getCurrentPages())
 const themeVars = computed<ConfigProviderThemeVars>(() => ({
@@ -23,6 +26,7 @@ const handleToHome = () => {
   uni.reLaunch({ url: '/pages/home/index' })
 }
 onMounted(() => {
+  // console.log(slots.prepend)
   // getCurrentPages()
   // console.log(getCurrentPages())
 })
@@ -37,52 +41,28 @@ onMounted(() => {
         :bordered="false"
         :custom-class="`${transparent ? 'bg-transparent!' : ''} `"
         v-bind="{ title }"
-        @click-left="!slots.prepend && router.back()"
       >
-        <!-- {{ pages }} -->
-        <template v-if="slots.prepend" #left>
-          <div class="flex items-center gap-4.5">
-            <wd-icon
-              v-if="pages.length === 1"
-              name="home"
-              size="50rpx"
-              :color="dark ? 'white' : 'blacak'"
-              @click="handleToHome"
-            ></wd-icon>
-            <wd-icon
-              v-else
-              name="arrow-left"
-              size="48rpx"
-              :color="dark ? 'white' : 'blacak'"
-              @click="router.back()"
-            ></wd-icon>
+        <template v-slot:[aa]>
+          <div class="flex items-center gap-4.5 w-full h-full">
+            <div class="flex items-center justify-center overflow-hidden">
+              <wd-icon
+                v-if="pages.length === 1"
+                name="home"
+                size="50rpx"
+                :color="dark ? 'white' : 'blacak'"
+                @click="handleToHome"
+              ></wd-icon>
+              <wd-icon
+                v-else
+                name="arrow-left"
+                size="48rpx"
+                :color="dark ? 'white' : 'blacak'"
+                @click="router.back()"
+              ></wd-icon>
+            </div>
             <slot name="prepend"></slot>
           </div>
         </template>
-        <template v-if="!slots.prepend" #capsule>
-          <div class="w-full h-full">
-            <!-- <wd-button
-              type="icon"
-              icon="home"
-              :custom-style="`color: ${dark ? 'white' : 'black'}`"
-              @click="handleToHome"
-            ></wd-button> -->
-            <wd-icon
-              v-if="pages.length === 1"
-              name="home"
-              size="50rpx"
-              :color="dark ? 'white' : 'blacak'"
-              @click="handleToHome"
-            ></wd-icon>
-            <wd-icon
-              v-else
-              name="arrow-left"
-              size="48rpx"
-              :color="dark ? 'white' : 'blacak'"
-              @click="router.back()"
-            ></wd-icon>
-          </div>
-        </template>
       </wd-navbar>
       <template v-if="props.placeholder">
         <wd-navbar

+ 10 - 10
packages/app/src/pages/home/mall/shopping-cart/index.vue

@@ -18,7 +18,6 @@ import {
   deleteProductItemBuy,
   getProductItemBuy,
   productPlacing,
-  updateProductItemNums,
 } from '../../../../core/libs/requests'
 import PageHelper from '@/components/page-helper.vue'
 import BottomAppBar from '@/components/bottom-app-bar.vue'
@@ -27,13 +26,11 @@ import { useRouter } from '../../../../core/utils/router'
 import { storeToRefs } from 'pinia'
 import { requestToast } from '../../../../core/utils/common'
 import type { ComponentExposed } from 'vue-component-type-helpers'
-import InputNumberEvo from '@/components/input-number-evo.vue'
 
 const pageHelperRef = ref<ComponentExposed<typeof PageHelper>>()
 const userStore = useUserStore()
 const router = useRouter()
 const { userInfo } = storeToRefs(userStore)
-const a = ref(1)
 const selected = ref([])
 const points = computed(() =>
   selected.value.reduce((acc, item) => acc + item.points * item.nums, 0),
@@ -101,13 +98,16 @@ const handlePlaceOrder = async () => {
     productPlacing({
       isShoppingCart: 1,
       userId: userInfo.value.userId,
-      list: selected.value.map(({ productId, prodcutName, productCoverImgUrl, nums, points }) => ({
-        productId,
-        productName: prodcutName,
-        orderImgUrl: productCoverImgUrl,
-        nums,
-        points,
-      })),
+      list: selected.value.map(
+        ({ productId, prodcutName, productCoverImgUrl, nums, points, vendorId }) => ({
+          productId,
+          productName: prodcutName,
+          orderImgUrl: productCoverImgUrl,
+          nums,
+          points,
+          vendorId,
+        }),
+      ),
       couponList: [],
     }),
   )

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

@@ -98,9 +98,6 @@ onShareAppMessage(async () => {
 </script>
 <template>
   <view class="bg-white flex-grow">
-    <!-- <div class="my-4 text-black/90 text-lg font-normal font-['PingFang_SC'] leading-[10.18px]">
-      {{ data?.content }}
-    </div> -->
     <NavBarEvo placeholder>
       <template #prepend>
         <div
@@ -114,6 +111,9 @@ onShareAppMessage(async () => {
         </div>
       </template>
     </NavBarEvo>
+    <!-- <div class="my-4 text-black/90 text-lg font-normal font-['PingFang_SC'] leading-[10.18px]">
+      {{ data?.detailsDesc }}
+    </div> -->
     <template v-if="swiperSizes && !isVideo">
       <div>
         <swiper class="" :style="swiperStyle" @change="handleChange">