From a38215478f73d97d477c6abf94994779cb73eca0 Mon Sep 17 00:00:00 2001 From: "Apple\\Apple" Date: Fri, 20 Jun 2025 00:52:45 +0800 Subject: [PATCH] =?UTF-8?q?=F0=9F=92=84=20style(TopUp):=20Optimize=20payme?= =?UTF-8?q?nt=20method=20buttons=20layout=20based=20on=20quantity?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Enhance the UI of payment method selection area with responsive layouts: - Use 2-column grid when exactly 2 payment methods are present - Use 3-column grid for 3 payment methods - Use compact card layout for more than 3 payment methods - Full-width button for single payment method This improves the visual balance across different device sizes and payment provider configurations, ensuring buttons fill their grid cells appropriately with the w-full class. --- web/src/pages/TopUp/index.js | 297 ++++++++++++++++++++++++----------- 1 file changed, 202 insertions(+), 95 deletions(-) diff --git a/web/src/pages/TopUp/index.js b/web/src/pages/TopUp/index.js index e327178d..a3a911cc 100644 --- a/web/src/pages/TopUp/index.js +++ b/web/src/pages/TopUp/index.js @@ -588,11 +588,10 @@ const TopUp = () => { selectPresetAmount(preset)} - className={`cursor-pointer !rounded-2xl transition-all hover:shadow-md ${ - selectedPreset === preset.value - ? 'border-blue-500' - : 'border-gray-200 hover:border-gray-300' - }`} + className={`cursor-pointer !rounded-2xl transition-all hover:shadow-md ${selectedPreset === preset.value + ? 'border-blue-500' + : 'border-gray-200 hover:border-gray-300' + }`} bodyStyle={{ textAlign: 'center' }} >
@@ -661,54 +660,139 @@ const TopUp = () => { />
-
- {/* - */} - {payMethods.map((payMethod) => ( - - ))} +
+ + {t('选择支付方式')} + + {payMethods.length === 2 ? ( +
+ {payMethods.map((payMethod) => ( + + ))} +
+ ) : payMethods.length === 3 ? ( +
+ {payMethods.map((payMethod) => ( + + ))} +
+ ) : payMethods.length > 3 ? ( +
+ {payMethods.map((payMethod) => ( + preTopUp(payMethod.type)} + disabled={!enableOnlineTopUp} + className={`cursor-pointer !rounded-xl p-0 transition-all hover:shadow-md ${paymentLoading && payWay === payMethod.type + ? 'border-blue-400' + : 'border-gray-200 hover:border-gray-300' + }`} + bodyStyle={{ + padding: '10px', + textAlign: 'center', + opacity: !enableOnlineTopUp ? 0.5 : 1 + }} + > + {paymentLoading && payWay === payMethod.type ? ( +
+
+
+
+
{t('处理中')}
+
+ ) : ( + <> +
+ {payMethod.type === 'zfb' ? ( + + ) : payMethod.type === 'wx' ? ( + + ) : ( + + )} +
+
{payMethod.name}
+ + )} +
+ ))} +
+ ) : ( +
+ {payMethods.map((payMethod) => ( + + ))} +
+ )}
@@ -941,48 +1025,71 @@ const TopUp = () => { /> -
- {/* - */} - {payMethods.map((payMethod) => ( - - ))} +
+ {payMethods.length === 2 ? ( +
+ {payMethods.map((payMethod) => ( + + ))} +
+ ) : ( +
+ {payMethods.map((payMethod) => ( + preTopUp(payMethod.type)} + disabled={!enableOnlineTopUp} + className={`cursor-pointer !rounded-xl p-0 transition-all ${paymentLoading && payWay === payMethod.type + ? 'border-blue-400' + : 'border-gray-200' + }`} + bodyStyle={{ + padding: '8px', + textAlign: 'center', + opacity: !enableOnlineTopUp ? 0.5 : 1 + }} + > + {paymentLoading && payWay === payMethod.type ? ( +
+ ) : ( + <> +
+ {payMethod.type === 'zfb' ? ( + + ) : payMethod.type === 'wx' ? ( + + ) : ( + + )} +
+
{payMethod.name}
+ + )} +
+ ))} +
+ )}