Răsfoiți Sursa

🐛 fix(cart): 修复订单提交前数据残留问题
- 在购物车结算前清除'checkoutItems'和'buyNow'存储数据

🐛 fix(goods-detail): 修复立即购买数据残留问题
- 在立即购买流程中增加清除'checkoutItems'存储数据的操作

💄 style(order-submit): 优化订单备注区域样式
- 调整备注区域高度和内边距,提升用户输入体验
- 修改文本框尺寸和计数器位置,优化视觉布局

♻️ refactor(order-submit): 重构订单提交页面代码
- 注释掉页面显示时检查地址的逻辑,避免重复获取
- 移除购物车数据获取逻辑,简化订单数据来源
- 优化ScrollView组件属性,添加content-wrapper容器提升布局稳定性
- 移除调试日志,减少控制台输出

yourname 1 lună în urmă
părinte
comite
87a53bfa6b

+ 2 - 0
mini/src/pages/cart/index.tsx

@@ -57,7 +57,9 @@ export default function CartPage() {
 
     const checkoutItems = cart.items.filter(item => selectedItems.includes(item.id))
 
+    Taro.removeStorageSync('buyNow')
     Taro.removeStorageSync('checkoutItems')
+    
     // 存储选中的商品信息
     Taro.setStorageSync('checkoutItems', {
       items: checkoutItems,

+ 2 - 0
mini/src/pages/goods-detail/index.tsx

@@ -186,6 +186,8 @@ export default function GoodsDetailPage() {
     }
 
     Taro.removeStorageSync('buyNow')
+    Taro.removeStorageSync('checkoutItems')
+    
     // 将商品信息存入临时存储,跳转到订单确认页
     Taro.setStorageSync('buyNow', {
       goods: {

+ 5 - 4
mini/src/pages/order-submit/index.css

@@ -3,7 +3,7 @@
 .order-sure {
   box-sizing: border-box;
   background: #f6f6f6;
-  padding: 24rpx 0 calc(env(safe-area-inset-bottom) + 136rpx);
+  padding: 24rpx 0 0;
   min-height: 100vh;
 }
 
@@ -263,6 +263,7 @@
   background-color: #ffffff;
   padding: 32rpx;
   margin-top: 24rpx;
+  height: 540rpx;
 }
 
 .remark-section .remark-header {
@@ -285,8 +286,8 @@
 
 .remark-section .remark-textarea {
   width: 100%;
-  min-height: 300rpx;
-  height: 240rpx;
+  min-height: 360rpx;
+  height: 320rpx;
   padding: 24rpx;
   background-color: #f8f8f8;
   border-radius: 16rpx;
@@ -300,7 +301,7 @@
   display: flex;
   justify-content: flex-end;
   margin-top: 16rpx;
-  min-height: 100rpx;
+  height: 400rpx;
 }
 
 .remark-section .remark-count {

+ 49 - 43
mini/src/pages/order-submit/index.tsx

@@ -97,41 +97,41 @@ export default function OrderSubmitPage() {
   })
 
   // 页面显示时检查是否有新选择的地址
-  useEffect(() => {
-    const handlePageShow = () => {
-      console.log('pageShow 事件触发')
-      const storedAddress = Taro.getStorageSync('selectedAddressData')
-      console.log("get selectedAddressData:", storedAddress);
-      if (storedAddress) {
-        setSelectedAddress(storedAddress)
-        setIsUserSelected(true) // 标记为用户手动选择
-        Taro.removeStorageSync('selectedAddressData')
-        console.log("selectedAddress00:", storedAddress)
-      }
-    }
-
-    // 监听页面显示事件
-    Taro.eventCenter.on('pageShow', handlePageShow)
-
-    // 组件挂载时也检查一次存储
-    const initialAddress = Taro.getStorageSync('selectedAddressData')
-    if (initialAddress) {
-      setSelectedAddress(initialAddress)
-      setIsUserSelected(true) // 标记为用户手动选择
-      Taro.removeStorageSync('selectedAddressData')
-    }
-
-    return () => {
-      Taro.eventCenter.off('pageShow', handlePageShow)
-    }
-  }, [])
+  // useEffect(() => {
+  //   const handlePageShow = () => {
+  //     console.log('pageShow 事件触发')
+  //     const storedAddress = Taro.getStorageSync('selectedAddressData')
+  //     console.log("get selectedAddressData:", storedAddress);
+  //     if (storedAddress) {
+  //       setSelectedAddress(storedAddress)
+  //       setIsUserSelected(true) // 标记为用户手动选择
+  //       Taro.removeStorageSync('selectedAddressData')
+  //       console.log("selectedAddress00:", storedAddress)
+  //     }
+  //   }
+
+  //   // 监听页面显示事件
+  //   Taro.eventCenter.on('pageShow', handlePageShow)
+
+  //   // 组件挂载时也检查一次存储
+  //   const initialAddress = Taro.getStorageSync('selectedAddressData')
+  //   if (initialAddress) {
+  //     setSelectedAddress(initialAddress)
+  //     setIsUserSelected(true) // 标记为用户手动选择
+  //     Taro.removeStorageSync('selectedAddressData')
+  //   }
+
+  //   return () => {
+  //     Taro.eventCenter.off('pageShow', handlePageShow)
+  //   }
+  // }, [])
 
   // 页面加载时获取订单数据 - 只执行一次
   useEffect(() => {
     // 从立即购买获取数据
     const buyNowData = Taro.getStorageSync('buyNow')
     const checkoutData = Taro.getStorageSync('checkoutItems')
-    const cartData = Taro.getStorageSync('mini_cart')
+    // const cartData = Taro.getStorageSync('mini_cart')
 
     // console.log("buyNowData",buyNowData)
     // console.log("checkoutItems",checkoutData)
@@ -156,18 +156,17 @@ export default function OrderSubmitPage() {
       // 从购物车获取数据
         setOrderItems(checkoutData.items)
         setTotalAmount(checkoutData.totalAmount)
-       
-      }
-       else if (cartData && cartData.items) {
-        // 使用购物车数据
-        const items = cartData.items
-        const total = items.reduce((sum: number, item: CheckoutItem) =>
-          sum + (item.price * item.quantity), 0)
-        setOrderItems(items)
-        setTotalAmount(total)
-
-        // Taro.removeStorageSync('mini_cart')
-  }
+    }
+  //   else if (cartData && cartData.items) {
+  //       // 使用购物车数据
+  //       const items = cartData.items
+  //       const total = items.reduce((sum: number, item: CheckoutItem) =>
+  //         sum + (item.price * item.quantity), 0)
+  //       setOrderItems(items)
+  //       setTotalAmount(total)
+
+  //       // Taro.removeStorageSync('mini_cart')
+  // }
     else
     {
        // 如果没有立即购买数据,清空订单项
@@ -211,7 +210,7 @@ export default function OrderSubmitPage() {
     createOrderMutation.mutate()
   }
 
-  console.log("渲染时 selectedAddress:", selectedAddress)
+ // console.log("渲染时 selectedAddress:", selectedAddress)
 
   return (
     <View className="order-sure">
@@ -221,7 +220,13 @@ export default function OrderSubmitPage() {
         onClickLeft={() => Taro.navigateBack()}
       />
 
-      <ScrollView className="h-screen pt-12">
+      <ScrollView
+        className="h-screen pt-12"
+        scrollY={true}
+        scrollWithAnimation={true}
+        enableFlex={true}
+      >
+        <View className="content-wrapper">
         {/* 收货地址区域 */}
         <View className="address-card">
           {selectedAddress ? (
@@ -323,6 +328,7 @@ export default function OrderSubmitPage() {
         </View>
 
 
+        </View>
       </ScrollView>
 
       {/* 底部提交栏 */}