From 8f688378e158fe450b8db9db58e44a01725d8666 Mon Sep 17 00:00:00 2001
From: Ultrame <1019265060@qq.com>
Date: Fri, 17 Oct 2025 11:53:29 +0800
Subject: [PATCH] =?UTF-8?q?=E8=87=AA=E5=AE=9A=E4=B9=89=E6=A0=87=E9=A2=98?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/user_pages/myself/index.tsx | 11 +-
.../setTransactionPassword/index.tsx | 1 +
src/user_pages/withdrawal/index.config.ts | 10 +-
src/user_pages/withdrawal/index.scss | 291 ++++----
src/user_pages/withdrawal/index.tsx | 655 ++++++++++--------
5 files changed, 546 insertions(+), 422 deletions(-)
diff --git a/src/user_pages/myself/index.tsx b/src/user_pages/myself/index.tsx
index b178502..ee4cfff 100644
--- a/src/user_pages/myself/index.tsx
+++ b/src/user_pages/myself/index.tsx
@@ -174,7 +174,7 @@ const MyselfPage: React.FC = () => {
Taro.navigateTo({
url: "/publish_pages/publishBall/index",
});
- }
+ };
// 处理球局订单
const handle_game_orders = () => {
@@ -243,8 +243,9 @@ const MyselfPage: React.FC = () => {
我主办的
setActiveTab("participated")}
>
我参与的
@@ -266,7 +267,7 @@ const MyselfPage: React.FC = () => {
btnImg="ICON_ADD"
reload={goPublish}
isShowNoData={game_records.length === 0}
- loadMoreMatches={() => { }}
+ loadMoreMatches={() => {}}
/>
@@ -290,7 +291,7 @@ const MyselfPage: React.FC = () => {
error={null}
errorImg="ICON_LIST_EMPTY"
isShowNoData={ended_game_records.length === 0}
- loadMoreMatches={() => { }}
+ loadMoreMatches={() => {}}
/>
{/* */}
diff --git a/src/user_pages/setTransactionPassword/index.tsx b/src/user_pages/setTransactionPassword/index.tsx
index b1d9aec..eb886e2 100644
--- a/src/user_pages/setTransactionPassword/index.tsx
+++ b/src/user_pages/setTransactionPassword/index.tsx
@@ -74,6 +74,7 @@ const SetTransactionPassword: React.FC = () => {
};
const handleConfirm = async () => {
+ if (!valid) return;
const { new_password, confirm_password } = formData;
if (new_password !== confirm_password) {
Taro.showToast({
diff --git a/src/user_pages/withdrawal/index.config.ts b/src/user_pages/withdrawal/index.config.ts
index 6c10df6..169580f 100644
--- a/src/user_pages/withdrawal/index.config.ts
+++ b/src/user_pages/withdrawal/index.config.ts
@@ -1,3 +1,9 @@
export default definePageConfig({
- navigationBarTitleText: '钱包',
-})
+ navigationBarTitleText: "钱包",
+ navigationBarBackgroundColor: "#ffffff",
+ navigationBarTextStyle: "black",
+ backgroundColor: "#f5f5f5",
+ enablePullDownRefresh: false,
+ disableScroll: false,
+ navigationStyle: "custom",
+});
diff --git a/src/user_pages/withdrawal/index.scss b/src/user_pages/withdrawal/index.scss
index c3d0003..f8e8f6c 100644
--- a/src/user_pages/withdrawal/index.scss
+++ b/src/user_pages/withdrawal/index.scss
@@ -1,140 +1,183 @@
.withdrawal-page {
- height: 100vh;
- font-family: PingFang SC;
- font-weight: 400;
- font-style: Regular;
- color: #3C3C4399;
- font-size: 12px;
- overflow: hidden;
+ height: 100vh;
+ font-family: PingFang SC;
+ font-weight: 400;
+ font-style: Regular;
+ color: #3c3c4399;
+ font-size: 12px;
+ overflow: hidden;
+ .custom-navbar {
+ height: 56px;
+ /* 通常与原生导航栏高度一致 */
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ // background-color: #fff;
+ color: #000;
+ padding-top: 44px;
+ /* 适配状态栏 */
+ position: sticky;
+ top: 0;
+ z-index: 100;
+ background-color: #f5f5f5;
+ }
- .withdrawal-container {
- margin: 20px 5px 0;
- border-radius: 20px;
- padding-top: 12px;
- padding-right: 20px;
- padding-bottom: 24px;
- padding-left: 20px;
- gap: 16px;
- border: 0.5px solid #EBEBEB;
- box-shadow: 0px 4px 36px 0px #0000000D;
+ .detail-navigator {
+ height: 30px;
+ width: fit-content;
+ border-radius: 15px;
+ position: absolute;
+ left: 12px;
+ box-sizing: border-box;
+ display: flex;
+ align-items: center;
- .title-text {
- color: #000;
- }
+ .detail-navigator-back {
+ height: 32px;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ font-family: PingFang SC;
+ font-weight: 600;
+ font-style: Semibold;
+ font-size: 20px;
+ letter-spacing: 0.38px;
- .input-container {
- font-weight: bold;
- color: #000;
- display: flex;
- align-items: flex-end;
- overflow: hidden;
- gap: 8px;
- border-bottom: 0.5px solid var(--Fills-Tertiary, #7878801F);
- margin: 12px 0;
- padding-bottom: 12px;
+ & > .detail-navigator-back-icon {
+ width: 32px;
+ height: 32px;
+ }
+ }
+ }
- .symbol {
- font-size: 20px;
- }
+ .withdrawal-container {
+ margin: 20px 5px 0;
+ border-radius: 20px;
+ padding-top: 12px;
+ padding-right: 20px;
+ padding-bottom: 24px;
+ padding-left: 20px;
+ gap: 16px;
+ border: 0.5px solid #ebebeb;
+ box-shadow: 0px 4px 36px 0px #0000000d;
- Input {
- font-size: 32px;
- height: 36px;
- min-height: 0;
- margin: 0;
- padding: 0;
- border: none;
- background: none;
- color: inherit;
- outline: none;
- -webkit-appearance: none;
- -moz-appearance: none;
- appearance: none;
- flex: 1;
- }
-
- .btn {
- height: 24px;
- border: 1px solid rgba(0, 0, 0, 0.06);
- display: flex;
- align-items: center;
- justify-content: center;
- color: #fff;
- background: #000;
- box-shadow: 0 8px 64px 0 rgba(0, 0, 0, 0.1);
- backdrop-filter: blur(16px);
- font-feature-settings: "liga" off, "clig" off;
- font-family: "PingFang SC";
- font-size: 9.6px;
- font-style: normal;
- line-height: normal;
- border-radius: 8px;
- margin-right: 0;
- }
- }
-
- .tips-text {
- color: #F3334A;
- }
-
- .btn-container {
- display: flex;
- justify-content: space-between;
-
- .btn {
- color: #007AFF;
- }
- }
+ .title-text {
+ color: #000;
}
- .tips-container {
- padding: 20px 20px;
+ .input-container {
+ font-weight: bold;
+ color: #000;
+ display: flex;
+ align-items: flex-end;
+ overflow: hidden;
+ gap: 8px;
+ border-bottom: 0.5px solid var(--Fills-Tertiary, #7878801f);
+ margin: 12px 0;
+ padding-bottom: 12px;
- .title-text {
- font-weight: 600;
- margin-bottom: 12px;
- }
+ .symbol {
+ font-size: 20px;
+ }
- .tips-text {
- display: flex;
- flex-direction: column;
- }
+ Input {
+ font-size: 32px;
+ height: 36px;
+ min-height: 0;
+ margin: 0;
+ padding: 0;
+ border: none;
+ background: none;
+ color: inherit;
+ outline: none;
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ appearance: none;
+ flex: 1;
+ }
+
+ .btn {
+ height: 24px;
+ border: 1px solid rgba(0, 0, 0, 0.06);
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ color: #fff;
+ background: #000;
+ box-shadow: 0 8px 64px 0 rgba(0, 0, 0, 0.1);
+ backdrop-filter: blur(16px);
+ font-feature-settings: "liga" off, "clig" off;
+ font-family: "PingFang SC";
+ font-size: 9.6px;
+ font-style: normal;
+ line-height: normal;
+ border-radius: 8px;
+ margin-right: 0;
+ }
}
+
+ .tips-text {
+ color: #f3334a;
+ }
+
+ .btn-container {
+ display: flex;
+ justify-content: space-between;
+
+ .btn {
+ color: #007aff;
+ }
+ }
+ }
+
+ .tips-container {
+ padding: 20px 20px;
+
+ .title-text {
+ font-weight: 600;
+ margin-bottom: 12px;
+ }
+
+ .tips-text {
+ display: flex;
+ flex-direction: column;
+ }
+ }
}
.withdraw_popup {
- min-height: unset;
- .popup_content {
- display: flex;
- flex-direction: column;
- align-items: center;
- user-select: none;
- pointer-events: none;
+ min-height: unset;
+ .popup_content {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ user-select: none;
+ pointer-events: none;
- .popup_text {
- font-family: DingTalk JinBuTi;
- font-weight: 400;
- font-style: Regular;
- font-size: 20px;
- line-height: 16px;
- margin: 20px 0;
- }
-
- .password_container {
- display: flex;
- gap: 4px;
- align-items: center;
-
- .password_item {
- width: 32px;
- height: 32px;
- border-radius: 4px;
- background-color: #7878801F;
- display: flex;
- justify-content: center;
- align-items: center;
- -webkit-text-security: disc;
- }
- }
+ .popup_text {
+ font-family: DingTalk JinBuTi;
+ font-weight: 400;
+ font-style: Regular;
+ font-size: 20px;
+ line-height: 16px;
+ margin: 20px 0;
}
-}
\ No newline at end of file
+
+ .password_container {
+ display: flex;
+ gap: 4px;
+ align-items: center;
+
+ .password_item {
+ width: 32px;
+ height: 32px;
+ border-radius: 4px;
+ background-color: #7878801f;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ -webkit-text-security: disc;
+ }
+ }
+ }
+}
diff --git a/src/user_pages/withdrawal/index.tsx b/src/user_pages/withdrawal/index.tsx
index 0d45b85..e3666d2 100644
--- a/src/user_pages/withdrawal/index.tsx
+++ b/src/user_pages/withdrawal/index.tsx
@@ -1,321 +1,394 @@
import React, { useState, useEffect, useRef } from "react";
-import { View, Text, Input, Button } from "@tarojs/components";
+import { View, Text, Input, Button, Image } from "@tarojs/components";
import Taro, { useDidShow } from "@tarojs/taro";
import httpService from "@/services/httpService";
import "./index.scss";
import { CommonPopup } from "@/components";
-import { useKeyboardHeight } from '@/store/keyboardStore'
+import { useKeyboardHeight } from "@/store/keyboardStore";
+import img from "@/config/images";
interface WalletInfo {
- balance: string;
- frozen_balance?: string;
- total_balance?: string;
- total_income?: string;
- total_withdraw?: string;
+ balance: string;
+ frozen_balance?: string;
+ total_balance?: string;
+ total_income?: string;
+ total_withdraw?: string;
}
const Withdrawal: React.FC = () => {
- const inputRef = useRef(null);
- // 使用全局键盘状态
- const { keyboardHeight, isKeyboardVisible, addListener, initializeKeyboardListener } = useKeyboardHeight()
- // 使用全局键盘状态监听
- useEffect(() => {
- // 初始化全局键盘监听器
- initializeKeyboardListener()
+ // 获取当前页面的配置
+ const currentPage = Taro.getCurrentInstance();
+ const pageConfig = currentPage.page?.config;
+ const pageTitle = pageConfig?.navigationBarTitleText;
+ const inputRef = useRef(null);
+ // 使用全局键盘状态
+ const {
+ keyboardHeight,
+ isKeyboardVisible,
+ addListener,
+ initializeKeyboardListener,
+ } = useKeyboardHeight();
+ // 使用全局键盘状态监听
+ useEffect(() => {
+ // 初始化全局键盘监听器
+ initializeKeyboardListener();
- // 添加本地监听器
- const removeListener = addListener((height, visible) => {
- console.log('AiImportPopup 收到键盘变化:', height, visible)
- })
-
- return () => {
- removeListener()
- }
- }, [initializeKeyboardListener, addListener])
- const [showTips, setShowTips] = useState(false);
- const [tipsText, setTipsText] = useState("");
- const [inputValue, setInputValue] = useState("0.00");
- const [walletInfo, setWalletInfo] = useState({
- balance: "0.00",
+ // 添加本地监听器
+ const removeListener = addListener((height, visible) => {
+ console.log("AiImportPopup 收到键盘变化:", height, visible);
});
- const [isFocus, setIsFocus] = useState(false);
- const [show_withdraw_popup, set_show_withdraw_popup] = useState(false);
-
- const [password, setPassword] = useState(new Array(6).fill(""));
-
- const [mapErrorCodes, setMapErrorCodes] = useState({});
-
- useDidShow(() => {
- load_wallet_data();
- getWithdrawErrorCodes();
- });
- useEffect(() => {
- if (show_withdraw_popup && inputRef.current) {
- inputRef.current.focus();
- }
- }, [show_withdraw_popup]);
- useEffect(() => {
- if (show_withdraw_popup) {
- setIsFocus(true);
- } else {
- setPassword(new Array(6).fill(""));
- setIsFocus(false);
- }
- }, [show_withdraw_popup]);
-
- const validateWithdrawAmount = (amount: string) => {
- if (Number(amount) > Number(walletInfo.balance)) {
- setShowTips(true);
- setTipsText("输入金额超过钱包余额");
- } else if (Number(amount) > 200) {
- setShowTips(true);
- setTipsText("单笔提现金额不能超过 200元");
- } else {
- setShowTips(false);
- }
+ return () => {
+ removeListener();
};
+ }, [initializeKeyboardListener, addListener]);
+ const [showTips, setShowTips] = useState(false);
+ const [tipsText, setTipsText] = useState("");
+ const [inputValue, setInputValue] = useState("0.00");
+ const [walletInfo, setWalletInfo] = useState({
+ balance: "0.00",
+ });
+ const [isFocus, setIsFocus] = useState(false);
- const withdrawAll = () => {
- setInputValue(walletInfo.balance);
- validateWithdrawAmount(walletInfo.balance);
- };
+ const [show_withdraw_popup, set_show_withdraw_popup] = useState(false);
- const handleInput = (e: any) => {
- console.log(e);
- const value = e.detail.value;
- setInputValue(value);
- validateWithdrawAmount(value);
- };
- // 加载钱包数据
- const load_wallet_data = async () => {
- try {
- const response = await httpService.post("/wallet/balance");
- const {
- balance,
- frozen_balance,
- total_balance,
- total_income,
- total_withdraw,
- } = response.data;
- setWalletInfo({
- balance,
- frozen_balance,
- total_balance,
- total_income,
- total_withdraw,
- });
- } catch (error: any) {
- console.error("加载钱包数据失败:", error);
+ const [password, setPassword] = useState(new Array(6).fill(""));
- let errorMessage = "加载失败,请重试";
- if (
- error &&
- error.response &&
- error.response.data &&
- error.response.data.message
- ) {
- errorMessage = error.response.data.message;
- } else if (error && error.data && error.data.message) {
- errorMessage = error.data.message;
- }
+ const [mapErrorCodes, setMapErrorCodes] = useState({});
- Taro.showToast({
- title: errorMessage,
- icon: "error",
- duration: 2000,
- });
- }
- };
- const getWithdrawErrorCodes = async () => {
- try {
- const response = await httpService.post("/wallet/error_codes");
- if (response.code === 0) {
- const { withdraw_errors: { WEIXIN_ERRORS } } = response.data;
- const mapErrorCodes = {};
- for (const key in WEIXIN_ERRORS) {
- const { code } = WEIXIN_ERRORS[key];
- mapErrorCodes[code] = WEIXIN_ERRORS[key];
- }
- setMapErrorCodes(mapErrorCodes);
- }
- } catch (error: any) {
- console.error("获取提现错误码失败:", error);
- }
+ useDidShow(() => {
+ load_wallet_data();
+ getWithdrawErrorCodes();
+ });
+ useEffect(() => {
+ if (show_withdraw_popup && inputRef.current) {
+ inputRef.current.focus();
}
- const handleWithdraw = async () => {
- set_show_withdraw_popup(true);
- };
- const submit_withdraw = async (payment_password: string) => {
- try {
- // 先调用后端接口获取提现参数
- const response = await httpService.post("/wallet/withdraw", {
- amount: parseFloat(inputValue),
- transfer_remark: "用户申请提现",
- payment_password,
- }, { showToast: false });
- const { data } = response;
- // 根据后端返回的数据结构解析参数
- const { mch_id, app_id, package_info, open_id } = data;
+ }, [show_withdraw_popup]);
+ useEffect(() => {
+ if (show_withdraw_popup) {
+ setIsFocus(true);
+ } else {
+ setPassword(new Array(6).fill(""));
+ setIsFocus(false);
+ }
+ }, [show_withdraw_popup]);
- console.log("/wallet/withdraw:", data);
- set_show_withdraw_popup(false);
+ const validateWithdrawAmount = (amount: string) => {
+ if (Number(amount) > Number(walletInfo.balance)) {
+ setShowTips(true);
+ setTipsText("输入金额超过钱包余额");
+ } else if (Number(amount) > 200) {
+ setShowTips(true);
+ setTipsText("单笔提现金额不能超过 200元");
+ } else {
+ setShowTips(false);
+ }
+ };
- // 调用微信商户转账接口
- (Taro as any).requestMerchantTransfer({
- mchId: mch_id,
- appId: app_id,
- package: package_info,
- openId: open_id,
- success: (res) => {
- console.log("微信转账成功:", res);
- Taro.showToast({
- title: "提现成功",
- icon: "success",
- duration: 2000,
- });
+ const withdrawAll = () => {
+ setInputValue(walletInfo.balance);
+ validateWithdrawAmount(walletInfo.balance);
+ };
- // 关闭弹窗并重置状态
- set_show_withdraw_popup(false);
- setInputValue("0.00");
- // 重新加载数据
- load_wallet_data();
- },
- fail: (res) => {
- console.log("微信转账失败:", res);
- },
+ const handleInput = (e: any) => {
+ console.log(e);
+ const value = e.detail.value;
+ setInputValue(value);
+ validateWithdrawAmount(value);
+ };
+ // 加载钱包数据
+ const load_wallet_data = async () => {
+ try {
+ const response = await httpService.post("/wallet/balance");
+ const {
+ balance,
+ frozen_balance,
+ total_balance,
+ total_income,
+ total_withdraw,
+ } = response.data;
+ setWalletInfo({
+ balance,
+ frozen_balance,
+ total_balance,
+ total_income,
+ total_withdraw,
+ });
+ } catch (error: any) {
+ console.error("加载钱包数据失败:", error);
+
+ let errorMessage = "加载失败,请重试";
+ if (
+ error &&
+ error.response &&
+ error.response.data &&
+ error.response.data.message
+ ) {
+ errorMessage = error.response.data.message;
+ } else if (error && error.data && error.data.message) {
+ errorMessage = error.data.message;
+ }
+
+ Taro.showToast({
+ title: errorMessage,
+ icon: "error",
+ duration: 2000,
+ });
+ }
+ };
+ const getWithdrawErrorCodes = async () => {
+ try {
+ const response = await httpService.post("/wallet/error_codes");
+ if (response.code === 0) {
+ const {
+ withdraw_errors: { WEIXIN_ERRORS },
+ } = response.data;
+ const mapErrorCodes = {};
+ for (const key in WEIXIN_ERRORS) {
+ const { code } = WEIXIN_ERRORS[key];
+ mapErrorCodes[code] = WEIXIN_ERRORS[key];
+ }
+ setMapErrorCodes(mapErrorCodes);
+ }
+ } catch (error: any) {
+ console.error("获取提现错误码失败:", error);
+ }
+ };
+ const handleWithdraw = async () => {
+ set_show_withdraw_popup(true);
+ };
+ const submit_withdraw = async (payment_password: string) => {
+ try {
+ // 先调用后端接口获取提现参数
+ const response = await httpService.post(
+ "/wallet/withdraw",
+ {
+ amount: parseFloat(inputValue),
+ transfer_remark: "用户申请提现",
+ payment_password,
+ },
+ { showToast: false }
+ );
+ const { data } = response;
+ // 根据后端返回的数据结构解析参数
+ const { mch_id, app_id, package_info, open_id } = data;
+
+ console.log("/wallet/withdraw:", data);
+ set_show_withdraw_popup(false);
+
+ // 调用微信商户转账接口
+ (Taro as any).requestMerchantTransfer({
+ mchId: mch_id,
+ appId: app_id,
+ package: package_info,
+ openId: open_id,
+ success: (res) => {
+ console.log("微信转账成功:", res);
+ Taro.showToast({
+ title: "提现成功",
+ icon: "success",
+ duration: 2000,
+ });
+
+ // 关闭弹窗并重置状态
+ set_show_withdraw_popup(false);
+ setInputValue("0.00");
+ // 重新加载数据
+ load_wallet_data();
+ },
+ fail: (res) => {
+ console.log("微信转账失败:", res);
+ },
+ });
+ } catch (error: any) {
+ const { code, message } = error;
+ if (message === "支付密码错误") {
+ set_show_withdraw_popup(false);
+ Taro.showModal({
+ content: "支付密码错误,请重试",
+ cancelText: "忘记密码",
+ confirmText: "重试",
+ cancelColor: "#000",
+ confirmColor: "#fff",
+ }).then((res) => {
+ if (res.confirm) {
+ set_show_withdraw_popup(true);
+ } else if (res.cancel) {
+ Taro.navigateTo({
+ url: "/user_pages/validPhone/index",
});
- } catch (error: any) {
- const { code, message } = error;
- if (message === "支付密码错误") {
- set_show_withdraw_popup(false);
- Taro.showModal({
- content: "支付密码错误,请重试",
- cancelText: "忘记密码",
- confirmText: "重试",
- cancelColor: "#000",
- confirmColor: "#fff",
- }).then((res) => {
- if (res.confirm) {
- set_show_withdraw_popup(true);
- } else if (res.cancel) {
- Taro.navigateTo({
- url: "/user_pages/validPhone/index"
- });
- }
- });
- return;
- } else if (mapErrorCodes[code]) {
- const { message, description } = mapErrorCodes[code];
- Taro.showModal({
- title: description,
- content: message,
- showCancel: false,
- confirmText: "确认",
- });
- return;
- } else {
- Taro.showToast({
- title: message,
- icon: "none",
- duration: 2000,
- });
- }
- }
+ }
+ });
+ return;
+ } else if (mapErrorCodes[code]) {
+ const { message, description } = mapErrorCodes[code];
+ Taro.showModal({
+ title: description,
+ content: message,
+ showCancel: false,
+ confirmText: "确认",
+ });
+ return;
+ } else {
+ Taro.showToast({
+ title: message,
+ icon: "none",
+ duration: 2000,
+ });
+ }
}
- const handlePasswordInput = (e: any) => {
- const value = e.detail.value;
- const [one = "", two = "", three = "", four = "", five = "", six = ""] = value.split("");
- setPassword([one, two, three, four, five, six]);
- if (value.length === 6) {
- const timer = setTimeout(() => {
- submit_withdraw(value);
- clearTimeout(timer);
- }, 100);
- }
+ };
+ const handlePasswordInput = (e: any) => {
+ const value = e.detail.value;
+ const [one = "", two = "", three = "", four = "", five = "", six = ""] =
+ value.split("");
+ setPassword([one, two, three, four, five, six]);
+ if (value.length === 6) {
+ const timer = setTimeout(() => {
+ submit_withdraw(value);
+ clearTimeout(timer);
+ }, 100);
}
- const handlePopupClick = (e) => {
- e.preventDefault()
- e.stopPropagation()
- e.nativeEvent.stopImmediatePropagation()
- inputRef.current!.focus();
- };
- return (
-
-
- 提现金额
-
- ¥
-
- {
- !showTips && (Number(inputValue) !== 0) && (
-
- )
- }
-
-
-
- {`我的余额:¥${walletInfo.balance}`}
- {/* (可提现余额:¥5000.00) */}
-
- 全部提现
-
- {
- showTips && (
- {tipsText}
- )
- }
-
-
- 提现须知
-
- 1. 本钱包余额由平台统一管理,提现服务由 微信支付(财付通) 提供。
- 2. 提现仅支持提现至本人实名认证的微信支付账户,请确保账户信息真实有效。
- 3. 每次提现金额不得超过钱包余额,且需满足提现金额最低限制(如有)。
- 4. 正常情况下提现 实时到账,如遇网络、系统或银行通道原因,可能会有延迟。
- 5. 提现过程中平台不收取任何手续费,如微信支付有特殊规则,按其实际规定执行。
- 6. 若发现异常交易、涉嫌违规或存在风险,平台有权暂停或拒绝提现操作。
- 7. 实际到账结果以 微信支付通知 为准。
+ };
+ const handlePopupClick = (e) => {
+ e.preventDefault();
+ e.stopPropagation();
+ e.nativeEvent.stopImmediatePropagation();
+ inputRef.current!.focus();
+ };
+ return (
+
+ {/* 导航栏 */}
+
+
+ {
+ Taro.navigateBack();
+ }}
+ >
+
+ {pageTitle}
+
+
+
+
+ 提现金额
+
+ ¥
+
+ {!showTips && Number(inputValue) !== 0 && (
+
+ )}
+
+
+
+ {`我的余额:¥${walletInfo.balance}`}
+ {/* (可提现余额:¥5000.00) */}
+
+
+ 全部提现
+
+
+ {showTips && {tipsText}}
+
+
+ 提现须知
+
+
+ 1. 本钱包余额由平台统一管理,提现服务由 微信支付(财付通) 提供。
+
+
+ 2.
+ 提现仅支持提现至本人实名认证的微信支付账户,请确保账户信息真实有效。
+
+
+ 3. 每次提现金额不得超过钱包余额,且需满足提现金额最低限制(如有)。
+
+
+ 4. 正常情况下提现
+ 实时到账,如遇网络、系统或银行通道原因,可能会有延迟。
+
+
+ 5.
+ 提现过程中平台不收取任何手续费,如微信支付有特殊规则,按其实际规定执行。
+
+
+ 6. 若发现异常交易、涉嫌违规或存在风险,平台有权暂停或拒绝提现操作。
+
+ 7. 实际到账结果以 微信支付通知 为准。
+
+
+
+ 免费声明
+
+ 1. 本平台不向用户收取提现手续费,提现服务免费。
+ 2. 若因银行或微信支付方收取相关费用,与本平台无关。
+
+ 3. 因网络、系统或第三方原因造成的延迟、失败,本平台不承担责任。
+
+ 4. 用户在使用提现服务前,应充分了解并同意上述规则。
+
+
-
-
-
- 免费声明
-
- 1. 本平台不向用户收取提现手续费,提现服务免费。
- 2. 若因银行或微信支付方收取相关费用,与本平台无关。
- 3. 因网络、系统或第三方原因造成的延迟、失败,本平台不承担责任。
- 4. 用户在使用提现服务前,应充分了解并同意上述规则。
-
-
-
- {/* 提现输入密码弹窗 */}
- set_show_withdraw_popup(false)}
- title="提现"
- className="withdraw_popup"
- hideFooter={true}
- style={{ bottom: isKeyboardVisible ? `${keyboardHeight}px` : undefined }}
- >
-
- {`¥${inputValue}`}
-
- {
- password.map((item, index) => (
-
- {item}
-
- ))
- }
-
- item !== "").join("")} maxlength={6} onInput={handlePasswordInput} onBlur={() => { set_show_withdraw_popup(false) }} />
-
-
-
- );
+ {/* 提现输入密码弹窗 */}
+ set_show_withdraw_popup(false)}
+ title="提现"
+ className="withdraw_popup"
+ hideFooter={true}
+ style={{
+ bottom: isKeyboardVisible ? `${keyboardHeight}px` : undefined,
+ }}
+ >
+
+ {`¥${inputValue}`}
+
+ {password.map((item, index) => (
+
+ {item}
+
+ ))}
+
+ item !== "").join("")}
+ maxlength={6}
+ onInput={handlePasswordInput}
+ onBlur={() => {
+ set_show_withdraw_popup(false);
+ }}
+ />
+
+
+
+ );
};
export default Withdrawal;