panhui vor 2 Jahren
Ursprung
Commit
59b3244cc9

BIN
public/fonts/AlimamaShuHeiTi-Bold.ttf


BIN
src/assets/icon-anniu-home.png


BIN
src/assets/icon-anniu-not.png


BIN
src/assets/icon-anniu.png


BIN
src/assets/icon-huiyuan-not.png


BIN
src/assets/icon-huiyuan-user.png


BIN
src/assets/icon-huiyuan.png


BIN
src/assets/icon-kapian-not.png


BIN
src/assets/icon-kapian.png


BIN
src/assets/icon_gouxuan_pre1.png


BIN
src/assets/png-cishu.png


BIN
src/assets/png-huiyuan-bg-not.png


BIN
src/assets/png-huiyuan-bg.png


BIN
src/assets/png-huiyuan.png


+ 329 - 307
src/locales/en.json

@@ -1,313 +1,335 @@
 {
-    "balance": {
-        "availableWidthdrawAmount": "Amount that can be withdrawn",
-        "balance": "Account Balance",
-        "credits": "Credits",
-        "totalRechargeAmount": "Total Recharge Amount",
-        "chooseAmount": "Choose Amount",
-        "confirmWithdraw": "Confirm withdrawal",
-        "inputCustomAmount": "Enter a custom amount",
-        "realReceipt": "Actual Arrival Amount",
-        "recharge": "Recharge",
-        "rechargeMax": "The maximum recharge amount is {value}",
-        "rechargeMin": "The minimum recharge amount is {value}",
-        "rechargeSuccess": "Recharge successful",
-        "record": {
-            "commission": "Commission",
-            "pay": "Pay",
-            "receipt": "Receipt",
-            "recharge": "Recharge",
-            "redeem": "Redeem",
-            "return": "Return",
-            "stake": "Stake",
-            "withdraw": "Withdraw",
-            "bonus": "Bonus"
-        },
-        "symbol": "₱",
-        "totalWithdraw": "Total withdrawal",
-        "unit": "PHP",
-        "withdraw": "Withdraw",
-        "withdrawAmount": "Withdrawal Amount",
-        "withdrawAmountError": "Enter the correct withdrawal amount",
-        "insufficientBalance": "Insufficient balance",
-        "withdrawMin": "The minimum withdrawal amount is {value}",
-        "withdrawFee": "Withdrawal fee",
-        "withdrawFeeTip": "Note: A service fee of <span class=\"rate2\">{rate2}</span> will be charged for withdrawals. If your credits reaches <span class=\"factor\">{factor}</span> times the total recharge amount, a super low service fee of <span class=\"rate1\">{rate1}</span> can be enjoyed.",
-        "withdrawing": "Withdrawing",
-        "withdrawInputTip": "Enter the withdrawal amount",
-        "withdrawModalTitle": "Apply for withdrawal",
-        "withdrawSuccess": "Withdrawal request has been submitted and is expected to arrive within 24 hours"
+  "balance": {
+    "availableWidthdrawAmount": "Amount that can be withdrawn",
+    "balance": "Account Balance",
+    "credits": "Credits",
+    "totalRechargeAmount": "Total Recharge Amount",
+    "chooseAmount": "Choose Amount",
+    "confirmWithdraw": "Confirm withdrawal",
+    "inputCustomAmount": "Enter a custom amount",
+    "realReceipt": "Actual Arrival Amount",
+    "recharge": "Recharge",
+    "rechargeMax": "The maximum recharge amount is {value}",
+    "rechargeMin": "The minimum recharge amount is {value}",
+    "rechargeSuccess": "Recharge successful",
+    "record": {
+      "commission": "Commission",
+      "pay": "Pay",
+      "receipt": "Receipt",
+      "recharge": "Recharge",
+      "redeem": "Redeem",
+      "return": "Return",
+      "stake": "Stake",
+      "withdraw": "Withdraw",
+      "bonus": "Bonus"
     },
-    "bank": {
-        "account": "Account",
-        "addBankCard": "Add Bank Account",
-        "bank": "Bank",
-        "deleteBankCard": "Delete Bank Account",
-        "deletePrompt": "This account won't be able to added again until 7 days later, are you sure to delete it?",
-        "deleteSuccess": "Bank account deleted successfully",
-        "editBankCard": "Edit Bank Account",
-        "invalidAccount": "Invalid Account",
-        "invalidBank": "Invalid Bank",
-        "invalidMail": "Invalid Mail",
-        "invalidName": "Invalid Name",
-        "invalidPhone": "Invalid Phone Number",
-        "mail": "Mail",
-        "name": "Name",
-        "phone": "Phone Number",
-        "saveBankCard": "Save Bank Account",
-        "selectBank": "Select Bank",
-        "invalidCard": "Invalid Account"
+    "symbol": "₱",
+    "totalWithdraw": "Total withdrawal",
+    "unit": "PHP",
+    "withdraw": "Withdraw",
+    "withdrawAmount": "Withdrawal Amount",
+    "withdrawAmountError": "Enter the correct withdrawal amount",
+    "insufficientBalance": "Insufficient balance",
+    "withdrawMin": "The minimum withdrawal amount is {value}",
+    "withdrawFee": "Withdrawal fee",
+    "withdrawFeeTip": "Note: A service fee of <span class=\"rate2\">{rate2}</span> will be charged for withdrawals. If your credits reaches <span class=\"factor\">{factor}</span> times the total recharge amount, a super low service fee of <span class=\"rate1\">{rate1}</span> can be enjoyed.",
+    "withdrawing": "Withdrawing",
+    "withdrawInputTip": "Enter the withdrawal amount",
+    "withdrawModalTitle": "Apply for withdrawal",
+    "withdrawSuccess": "Withdrawal request has been submitted and is expected to arrive within 24 hours"
+  },
+  "bank": {
+    "account": "Account",
+    "addBankCard": "Add Bank Account",
+    "bank": "Bank",
+    "deleteBankCard": "Delete Bank Account",
+    "deletePrompt": "This account won't be able to added again until 7 days later, are you sure to delete it?",
+    "deleteSuccess": "Bank account deleted successfully",
+    "editBankCard": "Edit Bank Account",
+    "invalidAccount": "Invalid Account",
+    "invalidBank": "Invalid Bank",
+    "invalidMail": "Invalid Mail",
+    "invalidName": "Invalid Name",
+    "invalidPhone": "Invalid Phone Number",
+    "mail": "Mail",
+    "name": "Name",
+    "phone": "Phone Number",
+    "saveBankCard": "Save Bank Account",
+    "selectBank": "Select Bank",
+    "invalidCard": "Invalid Account"
+  },
+  "blf": {
+    "buy": "STAKE NOW",
+    "buying": "STAKING",
+    "computing": "Calculating Profit",
+    "end": "Activity has ended",
+    "finish": "sold out",
+    "has": "Remaining places",
+    "not": "No Activity Yet",
+    "pending": "Coming soon",
+    "pic": "illustrate",
+    "sucess": "successful purchase",
+    "tips": "Stake your balance through the overall stake balance ratio of the platform. Get {rate}‰ of the stake amount of that day.",
+    "amount": "Enter stake amount",
+    "minAmount": "minimum stake amount: ",
+    "time": "Choose a stake duration",
+    "promptAmount": "Please enter stake amount",
+    "sure": "",
+    "tips1": "",
+    "tips2": ""
+  },
+  "common": {
+    "alert": "Hint",
+    "cancel": "Cancel",
+    "close": "Close",
+    "confirm": "Confirm",
+    "copied": "Copied",
+    "customerService": "Customer Service",
+    "eula": "EULA",
+    "exitApp": "Press again to exit the app",
+    "guide": "Tutorial",
+    "home": "Home",
+    "loadFinish": "Load finished",
+    "loading": "Loading",
+    "mine": "Mine",
+    "more": "More",
+    "news": "News",
+    "noRecords": "No records",
+    "notAvailable": "Unavailable",
+    "open": "Open",
+    "profit": "Commission",
+    "pullRefresh": "Pull down to refresh",
+    "rank": "Rank",
+    "register": "Register",
+    "save": "Save",
+    "saveFailed": "Save failed",
+    "saveSuccess": "Saved successfully",
+    "saving": "Saving",
+    "serviceTime": "Service from 9:00 am to 9:00 pm",
+    "skip": "Skip",
+    "updateSuccess": "Update success",
+    "wait": "Stay tuned",
+    "ok": "OK",
+    "customer": "Add your broker",
+    "reward": "Reward",
+    "official": "Official",
+    "broker": "Broker"
+  },
+  "delegate": {
+    "increase": "Increase",
+    "originalPrice": "Original Price",
+    "payServiceCharge": "Pay Service Charge",
+    "sellPrice": "Selling Price",
+    "tip": "The consignment has not started yet, it will start today at {time}",
+    "tip1": "Note: entrusting the platform to sell services, the maximum price of the product can be increased by {riseRatePercent}% each time, and the platform will charge {serviceCharge}% of the custody service fee",
+    "title": "Consignment",
+    "tips2": "",
+    "tips3": ""
+  },
+  "distribution": {
+    "commission": "Commission",
+    "empty": "Empty",
+    "invite": "INVITE NOW",
+    "joinTeamAt": "Join at",
+    "myInvitor": "My invitor",
+    "myProfit": "Income",
+    "orderNum": "Orders",
+    "profitDetails": "Income Details",
+    "qrCode": "My promo code",
+    "saveImg": "Save Picture",
+    "teamNum": "Team size",
+    "totalProfit": "Income",
+    "viewDetail": "View details",
+    "viewTeam": "View team",
+    "shareUrl": "Share Link",
+    "copy": "Copy"
+  },
+  "home": {
+    "all": "All",
+    "trialPrompt": "This is only available to new users who register within 72 hours, please head to higher level"
+  },
+  "loginPage": {
+    "agreement": "User Agreement",
+    "codePla": "Please enter verification code",
+    "enterUsername": "Enter your username",
+    "goRegister": "Sign up now",
+    "invitorPla": "Invitation code (optional)",
+    "isRead": "I have read and agreed",
+    "login": "Login",
+    "loginByCode": "Verification code login",
+    "loginNow": "Already have an account, login now",
+    "loginPwd": "Password Login",
+    "loginSuceess": "Login successful",
+    "nameError": "Account length 6-20, can only contain numbers, letters and underscores, not pure numbers",
+    "noAcount": "No account yet?",
+    "noAgree": "Please read and agree to the registration agreement",
+    "phone": "Phone number",
+    "phoneError": "Wrong format of phone number",
+    "phonePla": "Please enter phone number",
+    "psd": "Password",
+    "psdAgainError": "The two passwords entered are inconsistent",
+    "psdAgainPla": "Please enter password again",
+    "psdEorror": "Wrong format of password",
+    "psdPla": "Please enter password",
+    "register": "Registration",
+    "registerSuccess": "Registration success",
+    "sendCode": "Send code",
+    "sended": "Sent"
+  },
+  "mine": {
+    "address": "Address",
+    "avatar": "Avatar",
+    "bankCard": "Bank Account",
+    "bindPhone": "Bind Phone",
+    "common": "Common Functions",
+    "female": "Female",
+    "logout": "Sign out",
+    "male": "male",
+    "newProfit": "new income",
+    "nickname": "Nickname",
+    "nickPlac": "Please enter a nickname",
+    "noBind": "Not added",
+    "noLogin": "LOGIN NOW",
+    "noSetting": "Not set",
+    "settings": "Settings",
+    "sex": "Gender",
+    "sure": "Confirm the changes",
+    "user": "User",
+    "username": "Username"
+  },
+  "news": {
+    "newsNull": "There is no news~"
+  },
+  "order": {
+    "applyShip": "Apply for delivery",
+    "buyNow": "Buy Now",
+    "confirmReceipt": "Confirm the receipt of goods",
+    "countDown": "Order will be automatically canceled when the payment countdown expires",
+    "createdAt": "Created at",
+    "createSuccess": "Order successfully created",
+    "detail": "Order details",
+    "hasProblem": "Any problems?",
+    "id": "Order ID",
+    "minute": "Minutes",
+    "my": "My Orders",
+    "payAt": "Payment time",
+    "payInfo": "Payment Information",
+    "paying": "Payment in progress",
+    "payMethod": "Payment method",
+    "payMethodName": {
+      "balance": "Balance"
     },
-    "blf": {
-        "buy": "STAKE NOW",
-        "buying": "STAKING",
-        "computing": "Calculating Profit",
-        "end": "Activity has ended",
-        "finish": "sold out",
-        "has": "Remaining places",
-        "not": "No Activity Yet",
-        "pending": "Coming soon",
-        "pic": "illustrate",
-        "sucess": "successful purchase",
-        "tips": "Stake your balance through the overall stake balance ratio of the platform. Get {rate}‰ of the stake amount of that day.",
-        "amount": "Enter stake amount",
-        "minAmount": "minimum stake amount: ",
-        "time": "Choose a stake duration",
-        "promptAmount": "Please enter stake amount"
+    "payNow": "Pay now",
+    "paySuccess": "Payment successful",
+    "processing": "Processing",
+    "second": "Seconds",
+    "status": {
+      "ALL": "All",
+      "CANCELED": "Cancelled",
+      "CONFIRMED": "For Sale",
+      "NOT_CONFIRMED": "Waiting for the seller to confirm receipt",
+      "NOT_PAID": "Pending",
+      "NOT_SHIPPED": "to be delivered",
+      "RECEIVED": "received",
+      "SELLING": "Selling",
+      "SHIPPED": "Shipped",
+      "SOLD": "Sold",
+      "SOLD_NOT_CONFIRMED": "To be confirmed receipt",
+      "SOLD_NOT_PAID": "pending buyer payment"
     },
-    "common": {
-        "alert": "Hint",
-        "cancel": "Cancel",
-        "close": "Close",
-        "confirm": "Confirm",
-        "copied": "Copied",
-        "customerService": "Customer Service",
-        "eula": "EULA",
-        "exitApp": "Press again to exit the app",
-        "guide": "Tutorial",
-        "home": "Home",
-        "loadFinish": "Load finished",
-        "loading": "Loading",
-        "mine": "Mine",
-        "more": "More",
-        "news": "News",
-        "noRecords": "No records",
-        "notAvailable": "Unavailable",
-        "open": "Open",
-        "profit": "Commission",
-        "pullRefresh": "Pull down to refresh",
-        "rank": "Rank",
-        "register": "Register",
-        "save": "Save",
-        "saveFailed": "Save failed",
-        "saveSuccess": "Saved successfully",
-        "saving": "Saving",
-        "serviceTime": "Service from 9:00 am to 9:00 pm",
-        "skip": "Skip",
-        "updateSuccess": "Update success",
-        "wait": "Stay tuned",
-        "ok": "OK",
-        "customer": "Add your broker",
-        "reward": "Reward",
-        "official": "Official",
-        "broker": "Broker"
+    "statusDesc": {
+      "CANCELED": "The order has been cancelled, if you have any questions, please contact customer service",
+      "CONFIRMED": "It will be listed within 24 hours after making the consignment",
+      "NOT_CONFIRMED": "Waiting for the seller to confirm receipt",
+      "NOT_PAID": "Please pay as soon as possible, overtime unpaid orders will be automatically canceled",
+      "NOT_SHIPPED": "Waiting for the seller to deliver the goods",
+      "RECEIVED": "Received",
+      "SELLING": "On consignment, if you have any questions, please contact customer service",
+      "SHIPPED": "Shipped",
+      "SOLD": "Sold, please contact customer service if you have any questions",
+      "SOLD_NOT_CONFIRMED": "Waiting for confirmation of receipt",
+      "SOLD_NOT_PAID": "Waiting for the buyer to pay"
     },
-    "delegate": {
-        "increase": "Increase",
-        "originalPrice": "Original Price",
-        "payServiceCharge": "Pay Service Charge",
-        "sellPrice": "Selling Price",
-        "tip": "The consignment has not started yet, it will start today at {time}",
-        "tip1": "Note: entrusting the platform to sell services, the maximum price of the product can be increased by {riseRatePercent}% each time, and the platform will charge {serviceCharge}% of the custody service fee",
-        "title": "Consignment"
-    },
-    "distribution": {
-        "commission": "Commission",
-        "empty": "Empty",
-        "invite": "INVITE NOW",
-        "joinTeamAt": "Join at",
-        "myInvitor": "My invitor",
-        "myProfit": "Income",
-        "orderNum": "Orders",
-        "profitDetails": "Income Details",
-        "qrCode": "My promo code",
-        "saveImg": "Save Picture",
-        "teamNum": "Team size",
-        "totalProfit": "Income",
-        "viewDetail": "View details",
-        "viewTeam": "View team",
-        "shareUrl": "Share Link",
-        "copy": "Copy"
-    },
-    "home": {
-        "all": "All",
-        "trialPrompt": "This is only available to new users who register within 72 hours, please head to higher level"
-    },
-    "loginPage": {
-        "agreement": "User Agreement",
-        "codePla": "Please enter verification code",
-        "enterUsername": "Enter your username",
-        "goRegister": "Sign up now",
-        "invitorPla": "Invitation code (optional)",
-        "isRead": "I have read and agreed",
-        "login": "Login",
-        "loginByCode": "Verification code login",
-        "loginNow": "Already have an account, login now",
-        "loginPwd": "Password Login",
-        "loginSuceess": "Login successful",
-        "nameError": "Account length 6-20, can only contain numbers, letters and underscores, not pure numbers",
-        "noAcount": "No account yet?",
-        "noAgree": "Please read and agree to the registration agreement",
-        "phone": "Phone number",
-        "phoneError": "Wrong format of phone number",
-        "phonePla": "Please enter phone number",
-        "psd": "Password",
-        "psdAgainError": "The two passwords entered are inconsistent",
-        "psdAgainPla": "Please enter password again",
-        "psdEorror": "Wrong format of password",
-        "psdPla": "Please enter password",
-        "register": "Registration",
-        "registerSuccess": "Registration success",
-        "sendCode": "Send code",
-        "sended": "Sent"
-    },
-    "mine": {
-        "address": "Address",
-        "avatar": "Avatar",
-        "bankCard": "Bank Account",
-        "bindPhone": "Bind Phone",
-        "common": "Common Functions",
-        "female": "Female",
-        "logout": "Sign out",
-        "male": "male",
-        "newProfit": "new income",
-        "nickname": "Nickname",
-        "nickPlac": "Please enter a nickname",
-        "noBind": "Not added",
-        "noLogin": "LOGIN NOW",
-        "noSetting": "Not set",
-        "settings": "Settings",
-        "sex": "Gender",
-        "sure": "Confirm the changes",
-        "user": "User",
-        "username": "Username"
-    },
-    "news": {
-        "newsNull": "There is no news~"
-    },
-    "order": {
-        "applyShip": "Apply for delivery",
-        "buyNow": "Buy Now",
-        "confirmReceipt": "Confirm the receipt of goods",
-        "countDown": "Order will be automatically canceled when the payment countdown expires",
-        "createdAt": "Created at",
-        "createSuccess": "Order successfully created",
-        "detail": "Order details",
-        "hasProblem": "Any problems?",
-        "id": "Order ID",
-        "minute": "Minutes",
-        "my": "My Orders",
-        "payAt": "Payment time",
-        "payInfo": "Payment Information",
-        "paying": "Payment in progress",
-        "payMethod": "Payment method",
-        "payMethodName": {
-            "balance": "Balance"
-        },
-        "payNow": "Pay now",
-        "paySuccess": "Payment successful",
-        "processing": "Processing",
-        "second": "Seconds",
-        "status": {
-            "ALL": "All",
-            "CANCELED": "Cancelled",
-            "CONFIRMED": "For Sale",
-            "NOT_CONFIRMED": "Waiting for the seller to confirm receipt",
-            "NOT_PAID": "Pending",
-            "NOT_SHIPPED": "to be delivered",
-            "RECEIVED": "received",
-            "SELLING": "Selling",
-            "SHIPPED": "Shipped",
-            "SOLD": "Sold",
-            "SOLD_NOT_CONFIRMED": "To be confirmed receipt",
-            "SOLD_NOT_PAID": "pending buyer payment"
-        },
-        "statusDesc": {
-            "CANCELED": "The order has been cancelled, if you have any questions, please contact customer service",
-            "CONFIRMED": "It will be listed within 24 hours after making the consignment",
-            "NOT_CONFIRMED": "Waiting for the seller to confirm receipt",
-            "NOT_PAID": "Please pay as soon as possible, overtime unpaid orders will be automatically canceled",
-            "NOT_SHIPPED": "Waiting for the seller to deliver the goods",
-            "RECEIVED": "Received",
-            "SELLING": "On consignment, if you have any questions, please contact customer service",
-            "SHIPPED": "Shipped",
-            "SOLD": "Sold, please contact customer service if you have any questions",
-            "SOLD_NOT_CONFIRMED": "Waiting for confirmation of receipt",
-            "SOLD_NOT_PAID": "Waiting for the buyer to pay"
-        },
-        "stopSale": "Sale Suspended",
-        "total": "Total",
-        "totalPayment": "Total Payment",
-        "viewOrder": "View",
-        "walletPay": "Wallet payment"
-    },
-    "product": {
-        "dailyEarning": "Daily Income",
-        "detail": "Product Details",
-        "hot": "IN FULL SWING!",
-        "nowPrice": "Current",
-        "owner": "Current Holder",
-        "priceNow": "Current",
-        "riseDesc": "Daily Income",
-        "search": "Search",
-        "searchNo": "No products were found~",
-        "searchPla": "Enter search keywords",
-        "start": "Start at {time}",
-        "tag": "Digital Artwork",
-        "tomorrowBuy": "Can be sold for ",
-        "delayTips": "This product can only be purchased after the cooling time. If you need to buy multiple high-quality products in a concentrated manner, you can enter a higher level session.",
-        "soldOut": "Sold out"
-    },
-    "rank": {
-        "inviteNum": "New recruits",
-        "profitInfo": "Revenue",
-        "rank": "Ranking",
-        "rankByInvite": "Invite Ranking",
-        "rankByProfit": "Stake Ranking",
-        "userInfo": "User",
-        "withdrawRechargeRate": "Recharge revenue ratio",
-        "stake": "Stake",
-        "profit": "Profit"
-    },
-    "settings": {
-        "checkingUpdate": "Checking for update",
-        "checkUpdate": "Check for update",
-        "darkMode": "Dark Mode",
-        "updating": "Updating",
-        "upToDate": "Already up to date",
-        "newUpdate": "New version available",
-        "updateNow": "Update now"
-    },
-    "title": {
-        "balanceRecord": "Balance Records",
-        "distribution": "Revenue",
-        "myTeam": "My team",
-        "commissionRecords": "Commission Records"
-    },
-    "tutorial": {
-        "step1": "Step 1: Scan the QR code of the recommender, fill in the registration information, and click register to complete the registration",
-        "step2": "Step 2: After registration, save the QR code and share it with more users to register",
-        "step3": "Step 3: Login to the app, click on the wallet recharge amount",
-        "step4": "Step 4: Select or enter the amount to be recharged for recharge",
-        "step5": "Step 5: Select the session, click home, and select the initial session. Each user of the primary session is limited to two collections per day, the intermediate session is open from 4:00 pm to 5:00 pm every day, and the advanced session is open from 3:00 pm to 4:00 pm every day.",
-        "step6": "Step 6: Purchase collections, if the wallet balance is insufficient, you need to recharge the wallet balance",
-        "step7": "Step 7: When entrusting the collection to be put on the shelves in the order, you need to pay the platform a commission fee of 4%, and the collection range corresponding to the collection is 6% of the time of purchase.",
-        "step8": "Step 8: If the amount is sufficient, you can directly purchase the collection and then entrust it to be put on the shelf",
-        "step9": "Note: After purchasing 2 pieces, the primary field cannot purchase collections next time, and each user is limited to purchase 2 pieces per day"
-    },
-    "user": {
-        "notLogin": "User is not logged in, do you want to log in now?",
-        "profile": "Edit profile",
-        "wallet": "My Wallet"
-    }
+    "stopSale": "Sale Suspended",
+    "total": "Total",
+    "totalPayment": "Total Payment",
+    "viewOrder": "View",
+    "walletPay": "Wallet payment"
+  },
+  "product": {
+    "dailyEarning": "Daily Income",
+    "detail": "Product Details",
+    "hot": "IN FULL SWING!",
+    "nowPrice": "Current",
+    "owner": "Current Holder",
+    "priceNow": "Current",
+    "riseDesc": "Daily Income",
+    "search": "Search",
+    "searchNo": "No products were found~",
+    "searchPla": "Enter search keywords",
+    "start": "Start at {time}",
+    "tag": "Digital Artwork",
+    "tomorrowBuy": "Can be sold for ",
+    "delayTips": "This product can only be purchased after the cooling time. If you need to buy multiple high-quality products in a concentrated manner, you can enter a higher level session.",
+    "soldOut": "Sold out"
+  },
+  "rank": {
+    "inviteNum": "New recruits",
+    "profitInfo": "Revenue",
+    "rank": "Ranking",
+    "rankByInvite": "Invite Ranking",
+    "rankByProfit": "Stake Ranking",
+    "userInfo": "User",
+    "withdrawRechargeRate": "Recharge revenue ratio",
+    "stake": "Stake",
+    "profit": "Profit"
+  },
+  "settings": {
+    "checkingUpdate": "Checking for update",
+    "checkUpdate": "Check for update",
+    "darkMode": "Dark Mode",
+    "updating": "Updating",
+    "upToDate": "Already up to date",
+    "newUpdate": "New version available",
+    "updateNow": "Update now"
+  },
+  "title": {
+    "balanceRecord": "Balance Records",
+    "distribution": "Revenue",
+    "myTeam": "My team",
+    "commissionRecords": "Commission Records"
+  },
+  "tutorial": {
+    "step1": "Step 1: Scan the QR code of the recommender, fill in the registration information, and click register to complete the registration",
+    "step2": "Step 2: After registration, save the QR code and share it with more users to register",
+    "step3": "Step 3: Login to the app, click on the wallet recharge amount",
+    "step4": "Step 4: Select or enter the amount to be recharged for recharge",
+    "step5": "Step 5: Select the session, click home, and select the initial session. Each user of the primary session is limited to two collections per day, the intermediate session is open from 4:00 pm to 5:00 pm every day, and the advanced session is open from 3:00 pm to 4:00 pm every day.",
+    "step6": "Step 6: Purchase collections, if the wallet balance is insufficient, you need to recharge the wallet balance",
+    "step7": "Step 7: When entrusting the collection to be put on the shelves in the order, you need to pay the platform a commission fee of 4%, and the collection range corresponding to the collection is 6% of the time of purchase.",
+    "step8": "Step 8: If the amount is sufficient, you can directly purchase the collection and then entrust it to be put on the shelf",
+    "step9": "Note: After purchasing 2 pieces, the primary field cannot purchase collections next time, and each user is limited to purchase 2 pieces per day"
+  },
+  "user": {
+    "notLogin": "User is not logged in, do you want to log in now?",
+    "profile": "Edit profile",
+    "wallet": "My Wallet"
+  },
+  "vip": {
+    "auto": "automatic acquisition",
+    "btn": "Renew",
+    "btn1": "recharge",
+    "isOpen": "Turned on",
+    "rights": "Rights",
+    "time": "Expire date:",
+    "title": "valued member",
+    "isClose": "Unopened",
+    "day": " Days",
+    "recharge": "Recharge member",
+    "tips": "Enjoy automatic acquisition rights",
+    "TopUp": "Recharge members enjoy benefits",
+    "expired": "membership has expired",
+    "lost": "Membership rights have been lost for {day} days",
+    "noVip": "no member"
+  }
 }

+ 311 - 310
src/locales/es.json

@@ -1,315 +1,316 @@
 {
-    "balance": {
-        "availableWidthdrawAmount": "Cantidad que se puede retirar",
-        "balance": "Saldo de la cuenta",
-        "chooseAmount": "seleccionar cantidad",
-        "confirmWithdraw": "Confirmar retiro",
-        "inputCustomAmount": "Ingrese una cantidad personalizada",
-        "realReceipt": "cuenta real",
-        "recharge": "recargar",
-        "rechargeMax": "El monto máximo de recarga es {value}",
-        "rechargeMin": "El monto mínimo de recarga es {value}",
-        "rechargeSuccess": "recarga exitosa",
-        "record": {
-            "bonus": "otorgar",
-            "commission": "comisión",
-            "pay": "pagar",
-            "receipt": "recolectar dinero",
-            "recharge": "recargar",
-            "redeem": "redención",
-            "return": "devolver",
-            "stake": "promesa",
-            "withdraw": "retirar"
-        },
-        "symbol": "₱",
-        "totalWithdraw": "Retiro acumulativo",
-        "unit": "Yuan",
-        "withdraw": "retirar",
-        "withdrawAmount": "Cantidad de retiro",
-        "withdrawAmountError": "Ingrese el monto de retiro correcto",
-        "withdrawFee": "Cargo por retiro",
-        "withdrawFeeTip": "Nota: 1/3 de la tarifa de transacción total de la compra es <span class=\"tarifa1\">{tarifa1}</span>, y la parte excedente es <span class=\"tarifa2\">{tarifa2}</span>",
-        "withdrawInputTip": "Por favor ingrese el monto del retiro",
-        "withdrawModalTitle": "Solicitar retiro",
-        "withdrawSuccess": "La solicitud de retiro ha sido enviada y se espera que llegue dentro de las 24 horas",
-        "withdrawing": "Retiro",
-        "insufficientBalance": "Saldo insuficiente",
-        "withdrawMin": "El monto mínimo de retiro es {value}",
-        "credits": "integral",
-        "totalRechargeAmount": "recarga acumulada"
+  "balance": {
+    "availableWidthdrawAmount": "Cantidad que se puede retirar",
+    "balance": "Saldo de la cuenta",
+    "chooseAmount": "seleccionar cantidad",
+    "confirmWithdraw": "Confirmar retiro",
+    "inputCustomAmount": "Ingrese una cantidad personalizada",
+    "realReceipt": "cuenta real",
+    "recharge": "recargar",
+    "rechargeMax": "El monto máximo de recarga es {value}",
+    "rechargeMin": "El monto mínimo de recarga es {value}",
+    "rechargeSuccess": "recarga exitosa",
+    "record": {
+      "bonus": "otorgar",
+      "commission": "comisión",
+      "pay": "pagar",
+      "receipt": "recolectar dinero",
+      "recharge": "recargar",
+      "redeem": "redención",
+      "return": "devolver",
+      "stake": "promesa",
+      "withdraw": "retirar"
     },
-    "bank": {
-        "account": "número de tarjeta bancaria",
-        "addBankCard": "añadir tarjeta bancaria",
-        "bank": "banco",
-        "deleteBankCard": "borrar tarjeta bancaria",
-        "deletePrompt": "¿Está seguro de eliminar esta tarjeta bancaria?",
-        "deleteSuccess": "eliminado con éxito",
-        "editBankCard": "editar tarjeta",
-        "invalidAccount": "Número de tarjeta bancaria no válido",
-        "invalidBank": "nombre de banco inválido",
-        "invalidCard": "Número de tarjeta bancaria no válido",
-        "invalidMail": "email inválido",
-        "invalidName": "Nombre del titular de la tarjeta no válido",
-        "invalidPhone": "numero de telefono invalido",
-        "mail": "Correo",
-        "name": "Nombre del tarjetahabiente",
-        "phone": "Número de teléfono",
-        "saveBankCard": "guardar tarjeta bancaria",
-        "selectBank": "elegir banco"
+    "symbol": "₱",
+    "totalWithdraw": "Retiro acumulativo",
+    "unit": "Yuan",
+    "withdraw": "retirar",
+    "withdrawAmount": "Cantidad de retiro",
+    "withdrawAmountError": "Ingrese el monto de retiro correcto",
+    "withdrawFee": "Cargo por retiro",
+    "withdrawFeeTip": "Nota: 1/3 de la tarifa de transacción total de la compra es <span class=\"tarifa1\">{tarifa1}</span>, y la parte excedente es <span class=\"tarifa2\">{tarifa2}</span>",
+    "withdrawInputTip": "Por favor ingrese el monto del retiro",
+    "withdrawModalTitle": "Solicitar retiro",
+    "withdrawSuccess": "La solicitud de retiro ha sido enviada y se espera que llegue dentro de las 24 horas",
+    "withdrawing": "Retiro",
+    "insufficientBalance": "Saldo insuficiente",
+    "withdrawMin": "El monto mínimo de retiro es {value}",
+    "credits": "integral",
+    "totalRechargeAmount": "recarga acumulada"
+  },
+  "bank": {
+    "account": "número de tarjeta bancaria",
+    "addBankCard": "añadir tarjeta bancaria",
+    "bank": "banco",
+    "deleteBankCard": "borrar tarjeta bancaria",
+    "deletePrompt": "¿Está seguro de eliminar esta tarjeta bancaria?",
+    "deleteSuccess": "eliminado con éxito",
+    "editBankCard": "editar tarjeta",
+    "invalidAccount": "Número de tarjeta bancaria no válido",
+    "invalidBank": "nombre de banco inválido",
+    "invalidCard": "Número de tarjeta bancaria no válido",
+    "invalidMail": "email inválido",
+    "invalidName": "Nombre del titular de la tarjeta no válido",
+    "invalidPhone": "numero de telefono invalido",
+    "mail": "Correo",
+    "name": "Nombre del tarjetahabiente",
+    "phone": "Número de teléfono",
+    "saveBankCard": "guardar tarjeta bancaria",
+    "selectBank": "elegir banco"
+  },
+  "blf": {
+    "buy": "agárrate ahora",
+    "buying": "absorbido, ingresos",
+    "computing": "Cálculo de ingresos",
+    "end": "encima",
+    "finish": "agotado",
+    "has": "Lugares restantes",
+    "not": "sin actividad todavía",
+    "pending": "Muy pronto",
+    "pic": "ilustrar",
+    "sucess": "compra exitosa",
+    "tips": "Prometa su saldo y disfrute de los dividendos de hoy a través de la relación de saldo de compromiso general de la plataforma, y ​​el ingreso químico diario más alto puede obtener 1%",
+    "amount": "Ingrese el monto de la promesa",
+    "minAmount": "oferta mínima",
+    "sure": "",
+    "time": "Elija un tiempo de compromiso",
+    "tips1": "",
+    "tips2": ""
+  },
+  "common": {
+    "alert": "pista",
+    "cancel": "Cancelar",
+    "close": "cierre",
+    "confirm": "Seguro",
+    "copied": "copiado",
+    "customerService": "Servicio de consejería",
+    "eula": "Acuerdo de plataforma",
+    "exitApp": "Presione de nuevo para salir de la aplicación",
+    "guide": "tutorial",
+    "home": "página delantera",
+    "loadFinish": "Carga completada",
+    "loading": "Cargando",
+    "mine": "mío",
+    "more": "Más",
+    "news": "noticias",
+    "noRecords": "No hay registros",
+    "notAvailable": "aún no abierto",
+    "ok": "DE ACUERDO",
+    "open": "Abierto",
+    "profit": "dividendos",
+    "pullRefresh": "Tire hacia abajo para refrescar",
+    "rank": "tabla de clasificación",
+    "register": "registro",
+    "save": "ahorrar",
+    "saveFailed": "Error al guardar",
+    "saveSuccess": "Guardado exitosamente",
+    "saving": "ahorro",
+    "serviceTime": "Horario de atención al cliente de 9:00 am a 9:00 pm",
+    "skip": "salte por encima",
+    "updateSuccess": "actualización completada",
+    "wait": "Manténganse al tanto",
+    "customer": "Atención al cliente exclusiva",
+    "reward": "otorgar",
+    "broker": "agente",
+    "official": "oficial"
+  },
+  "delegate": {
+    "increase": "margen",
+    "originalPrice": "precio original",
+    "payServiceCharge": "pagar tarifas de procesamiento",
+    "sellPrice": "precio de venta",
+    "tip": "La venta a consignación aún no ha comenzado, comenzará hoy a las {time}",
+    "tip1": "Nota: al confiar a la plataforma la venta de servicios, el precio máximo del producto puede incrementarse en un {riseRatePercent}% cada vez, y la plataforma cobrará un {serviceCharge}% de la tarifa del servicio de custodia.",
+    "title": "Envío",
+    "tips2": "",
+    "tips3": ""
+  },
+  "distribution": {
+    "commission": "comisión",
+    "copy": "Copiar",
+    "empty": "no todavía",
+    "invite": "invitar",
+    "joinTeamAt": "tiempo para unirse al equipo",
+    "myInvitor": "mi recomendador",
+    "myProfit": "mis ingresos",
+    "orderNum": "número de orden",
+    "profitDetails": "Detalles de ingresos",
+    "qrCode": "mi código de promoción",
+    "saveImg": "guardar foto",
+    "shareUrl": "Compartir enlace:",
+    "teamNum": "Tamaño del equipo",
+    "totalProfit": "Los ingresos totales",
+    "viewDetail": "ver detalles",
+    "viewTeam": "ver equipo"
+  },
+  "home": {
+    "all": "todo",
+    "trialPrompt": "Solo abierto a nuevos usuarios que se registren dentro de las 72 horas"
+  },
+  "loginPage": {
+    "agreement": "Acuerdo del Usuario",
+    "codePla": "por favor ingrese el código de verificación",
+    "enterUsername": "por favor ingrese el nombre de usuario",
+    "goRegister": "Regístrate ahora",
+    "invitorPla": "Código de invitación (opcional)",
+    "isRead": "he leído y estoy de acuerdo",
+    "login": "Acceso",
+    "loginByCode": "Código de verificación de inicio de sesión",
+    "loginNow": "Ya tienes una cuenta, inicia sesión ahora",
+    "loginPwd": "contraseña de acceso",
+    "loginSuceess": "Inicio de sesión correcto",
+    "nameError": "Longitud de cuenta 6-20, solo puede contener números, letras y guiones bajos, no números puros",
+    "noAcount": "¿No tienes cuenta aún?",
+    "noAgree": "Lea y acepte el acuerdo de registro",
+    "phone": "Número de teléfono",
+    "phoneError": "Formato incorrecto del número de teléfono",
+    "phonePla": "Por favor ingrese el número de teléfono",
+    "psd": "contraseña",
+    "psdAgainError": "Las dos contraseñas ingresadas son inconsistentes",
+    "psdAgainPla": "por favor ingrese la contraseña de nuevo",
+    "psdEorror": "Longitud de la contraseña 6-20, solo puede contener números, letras y guiones bajos, no números puros",
+    "psdPla": "Por favor, ingrese contraseña",
+    "register": "Registrar una cuenta",
+    "registerSuccess": "registración exitosa",
+    "sendCode": "Enviar el código de verificación",
+    "sended": "Ha sido enviado"
+  },
+  "mine": {
+    "address": "Dirección de envío",
+    "avatar": "avatar",
+    "bankCard": "mi tarjeta bancaria",
+    "bindPhone": "Vincular número de teléfono móvil",
+    "common": "Funciones comunes",
+    "female": "femenino",
+    "logout": "desconectar",
+    "male": "masculino",
+    "newProfit": "nuevos ingresos",
+    "nickPlac": "Por favor escribe un apodo",
+    "nickname": "Apodo",
+    "noBind": "sin consolidar",
+    "noLogin": "Sin iniciar sesión",
+    "noSetting": "no establecido",
+    "settings": "configuración",
+    "sex": "género",
+    "sure": "Confirmar los cambios",
+    "user": "usuario",
+    "username": "nombre de usuario"
+  },
+  "news": {
+    "newsNull": "No hay noticias ~"
+  },
+  "order": {
+    "applyShip": "Solicitar entrega",
+    "buyNow": "Compre ya",
+    "confirmReceipt": "confirmar la recepción de mercancías",
+    "countDown": "Cancelar automáticamente el pedido cuando expire la cuenta atrás del pago",
+    "createSuccess": "Pedido creado con éxito",
+    "createdAt": "tiempo de la orden",
+    "detail": "detalles del pedido",
+    "hasProblem": "¿Tienes problemas?",
+    "id": "número de orden",
+    "minute": "punto",
+    "my": "Mi pedido",
+    "payAt": "tiempo de pago",
+    "payInfo": "Información del pago",
+    "payMethod": "método de pago",
+    "payMethodName": {
+      "balance": "pago del saldo"
     },
-    "blf": {
-        "buy": "agárrate ahora",
-        "buying": "absorbido, ingresos",
-        "computing": "Cálculo de ingresos",
-        "end": "encima",
-        "finish": "agotado",
-        "has": "Lugares restantes",
-        "not": "sin actividad todavía",
-        "pending": "Muy pronto",
-        "pic": "ilustrar",
-        "sucess": "compra exitosa",
-        "tips": "Prometa su saldo y disfrute de los dividendos de hoy a través de la relación de saldo de compromiso general de la plataforma, y ​​el ingreso químico diario más alto puede obtener 1%",
-        "amount": "Ingrese el monto de la promesa",
-        "minAmount": "oferta mínima",
-        "sure": "Confirmar compromiso",
-        "time": "Elija un tiempo de compromiso",
-        "tips1": "Comprometa su saldo, disfrute de los dividendos de hoy a través de la relación de saldo de compromiso general de la plataforma y obtenga los ingresos químicos diarios más altos",
-        "tips2": "‰"
+    "payNow": "paga inmediatamente",
+    "paySuccess": "Pago exitoso",
+    "paying": "Pagos",
+    "processing": "Procesando",
+    "second": "Segundo",
+    "status": {
+      "ALL": "todo",
+      "CANCELED": "Cancelado",
+      "CONFIRMED": "ser confiado",
+      "NOT_CONFIRMED": "Esperando a que el vendedor confirme la recepción",
+      "NOT_PAID": "Pago pendiente",
+      "RECEIVED": "recibió",
+      "SELLING": "encomendado",
+      "SHIPPED": "Enviado",
+      "SOLD": "Vendido",
+      "SOLD_NOT_CONFIRMED": "A confirmar recibo",
+      "SOLD_NOT_PAID": "pendiente de pago del comprador",
+      "NOT_SHIPPED": "para ser entregado"
     },
-    "common": {
-        "alert": "pista",
-        "cancel": "Cancelar",
-        "close": "cierre",
-        "confirm": "Seguro",
-        "copied": "copiado",
-        "customerService": "Servicio de consejería",
-        "eula": "Acuerdo de plataforma",
-        "exitApp": "Presione de nuevo para salir de la aplicación",
-        "guide": "tutorial",
-        "home": "página delantera",
-        "loadFinish": "Carga completada",
-        "loading": "Cargando",
-        "mine": "mío",
-        "more": "Más",
-        "news": "noticias",
-        "noRecords": "No hay registros",
-        "notAvailable": "aún no abierto",
-        "ok": "DE ACUERDO",
-        "open": "Abierto",
-        "profit": "dividendos",
-        "pullRefresh": "Tire hacia abajo para refrescar",
-        "rank": "tabla de clasificación",
-        "register": "registro",
-        "save": "ahorrar",
-        "saveFailed": "Error al guardar",
-        "saveSuccess": "Guardado exitosamente",
-        "saving": "ahorro",
-        "serviceTime": "Horario de atención al cliente de 9:00 am a 9:00 pm",
-        "skip": "salte por encima",
-        "updateSuccess": "actualización completada",
-        "wait": "Manténganse al tanto",
-        "customer": "Atención al cliente exclusiva",
-        "reward": "otorgar",
-        "broker": "agente",
-        "official": "oficial"
+    "statusDesc": {
+      "CANCELED": "El pedido ha sido cancelado, si tiene alguna pregunta, comuníquese con el servicio al cliente",
+      "CONFIRMED": "Para ser confiado, se colocará en los estantes dentro de las 24 horas posteriores a la confianza.",
+      "NOT_CONFIRMED": "Esperando a que el vendedor confirme la recepción",
+      "NOT_PAID": "Pague lo antes posible, los pedidos de horas extras no pagadas se cancelarán automáticamente",
+      "NOT_SHIPPED": "para ser entregado",
+      "RECEIVED": "recibió",
+      "SELLING": "En encomienda, si tiene alguna pregunta, comuníquese con el servicio al cliente",
+      "SHIPPED": "Enviado",
+      "SOLD": "Vendido, póngase en contacto con el servicio de atención al cliente si tiene alguna pregunta.",
+      "SOLD_NOT_CONFIRMED": "A confirmar recibo",
+      "SOLD_NOT_PAID": "pendiente de pago del comprador"
     },
-    "delegate": {
-        "increase": "margen",
-        "originalPrice": "precio original",
-        "payServiceCharge": "pagar tarifas de procesamiento",
-        "sellPrice": "precio de venta",
-        "tip": "La venta a consignación aún no ha comenzado, comenzará hoy a las {time}",
-        "tip1": "Nota: al confiar a la plataforma la venta de servicios, el precio máximo del producto puede incrementarse en un {riseRatePercent}% cada vez, y la plataforma cobrará un {serviceCharge}% de la tarifa del servicio de custodia.",
-        "title": "Envío",
-        "tips2": "Los artículos enumerados se congelarán",
-        "tips3": "Hora"
-    },
-    "distribution": {
-        "commission": "comisión",
-        "copy": "Copiar",
-        "empty": "no todavía",
-        "invite": "invitar",
-        "joinTeamAt": "tiempo para unirse al equipo",
-        "myInvitor": "mi recomendador",
-        "myProfit": "mis ingresos",
-        "orderNum": "número de orden",
-        "profitDetails": "Detalles de ingresos",
-        "qrCode": "mi código de promoción",
-        "saveImg": "guardar foto",
-        "shareUrl": "Compartir enlace:",
-        "teamNum": "Tamaño del equipo",
-        "totalProfit": "Los ingresos totales",
-        "viewDetail": "ver detalles",
-        "viewTeam": "ver equipo"
-    },
-    "home": {
-        "all": "todo",
-        "trialPrompt": "Solo abierto a nuevos usuarios que se registren dentro de las 72 horas"
-    },
-    "loginPage": {
-        "agreement": "Acuerdo del Usuario",
-        "codePla": "por favor ingrese el código de verificación",
-        "enterUsername": "por favor ingrese el nombre de usuario",
-        "goRegister": "Regístrate ahora",
-        "invitorPla": "Código de invitación (opcional)",
-        "isRead": "he leído y estoy de acuerdo",
-        "login": "Acceso",
-        "loginByCode": "Código de verificación de inicio de sesión",
-        "loginNow": "Ya tienes una cuenta, inicia sesión ahora",
-        "loginPwd": "contraseña de acceso",
-        "loginSuceess": "Inicio de sesión correcto",
-        "nameError": "Longitud de cuenta 6-20, solo puede contener números, letras y guiones bajos, no números puros",
-        "noAcount": "¿No tienes cuenta aún?",
-        "noAgree": "Lea y acepte el acuerdo de registro",
-        "phone": "Número de teléfono",
-        "phoneError": "Formato incorrecto del número de teléfono",
-        "phonePla": "Por favor ingrese el número de teléfono",
-        "psd": "contraseña",
-        "psdAgainError": "Las dos contraseñas ingresadas son inconsistentes",
-        "psdAgainPla": "por favor ingrese la contraseña de nuevo",
-        "psdEorror": "Longitud de la contraseña 6-20, solo puede contener números, letras y guiones bajos, no números puros",
-        "psdPla": "Por favor, ingrese contraseña",
-        "register": "Registrar una cuenta",
-        "registerSuccess": "registración exitosa",
-        "sendCode": "Enviar el código de verificación",
-        "sended": "Ha sido enviado"
-    },
-    "mine": {
-        "address": "Dirección de envío",
-        "avatar": "avatar",
-        "bankCard": "mi tarjeta bancaria",
-        "bindPhone": "Vincular número de teléfono móvil",
-        "common": "Funciones comunes",
-        "female": "femenino",
-        "logout": "desconectar",
-        "male": "masculino",
-        "newProfit": "nuevos ingresos",
-        "nickPlac": "Por favor escribe un apodo",
-        "nickname": "Apodo",
-        "noBind": "sin consolidar",
-        "noLogin": "Sin iniciar sesión",
-        "noSetting": "no establecido",
-        "settings": "configuración",
-        "sex": "género",
-        "sure": "Confirmar los cambios",
-        "user": "usuario",
-        "username": "nombre de usuario"
-    },
-    "news": {
-        "newsNull": "No hay noticias ~"
-    },
-    "order": {
-        "applyShip": "Solicitar entrega",
-        "buyNow": "Compre ya",
-        "confirmReceipt": "confirmar la recepción de mercancías",
-        "countDown": "Cancelar automáticamente el pedido cuando expire la cuenta atrás del pago",
-        "createSuccess": "Pedido creado con éxito",
-        "createdAt": "tiempo de la orden",
-        "detail": "detalles del pedido",
-        "hasProblem": "¿Tienes problemas?",
-        "id": "número de orden",
-        "minute": "punto",
-        "my": "Mi pedido",
-        "payAt": "tiempo de pago",
-        "payInfo": "Información del pago",
-        "payMethod": "método de pago",
-        "payMethodName": {
-            "balance": "pago del saldo"
-        },
-        "payNow": "paga inmediatamente",
-        "paySuccess": "Pago exitoso",
-        "paying": "Pagos",
-        "processing": "Procesando",
-        "second": "Segundo",
-        "status": {
-            "ALL": "todo",
-            "CANCELED": "Cancelado",
-            "CONFIRMED": "ser confiado",
-            "NOT_CONFIRMED": "Esperando a que el vendedor confirme la recepción",
-            "NOT_PAID": "Pago pendiente",
-            "RECEIVED": "recibió",
-            "SELLING": "encomendado",
-            "SHIPPED": "Enviado",
-            "SOLD": "Vendido",
-            "SOLD_NOT_CONFIRMED": "A confirmar recibo",
-            "SOLD_NOT_PAID": "pendiente de pago del comprador",
-            "NOT_SHIPPED": "para ser entregado"
-        },
-        "statusDesc": {
-            "CANCELED": "El pedido ha sido cancelado, si tiene alguna pregunta, comuníquese con el servicio al cliente",
-            "CONFIRMED": "Para ser confiado, se colocará en los estantes dentro de las 24 horas posteriores a la confianza.",
-            "NOT_CONFIRMED": "Esperando a que el vendedor confirme la recepción",
-            "NOT_PAID": "Pague lo antes posible, los pedidos de horas extras no pagadas se cancelarán automáticamente",
-            "NOT_SHIPPED": "para ser entregado",
-            "RECEIVED": "recibió",
-            "SELLING": "En encomienda, si tiene alguna pregunta, comuníquese con el servicio al cliente",
-            "SHIPPED": "Enviado",
-            "SOLD": "Vendido, póngase en contacto con el servicio de atención al cliente si tiene alguna pregunta.",
-            "SOLD_NOT_CONFIRMED": "A confirmar recibo",
-            "SOLD_NOT_PAID": "pendiente de pago del comprador"
-        },
-        "stopSale": "Suspensión de venta",
-        "total": "total",
-        "totalPayment": "pago real",
-        "viewOrder": "revisar orden",
-        "walletPay": "pago de billetera"
-    },
-    "product": {
-        "dailyEarning": "Ingreso diario",
-        "detail": "Detalles de producto",
-        "hot": "Caliente rompiendo…",
-        "nowPrice": "Precio actual",
-        "owner": "titular actual",
-        "priceNow": "precio actual",
-        "riseDesc": "Ingreso diario",
-        "search": "buscar",
-        "searchNo": "No se encontraron productos ~",
-        "searchPla": "Ingrese las palabras clave de búsqueda",
-        "start": "{hora} abierto",
-        "tag": "ilustraciones digitales",
-        "tomorrowBuy": "Disponible mañana",
-        "delayTips": "Esta colección se está enfriando, ¡puedes ir a una sesión superior para verla!",
-        "soldOut": "Agotado"
-    },
-    "rank": {
-        "inviteNum": "nuevos reclutas",
-        "profit": "ingreso",
-        "profitInfo": "Información de ganancias",
-        "rank": "clasificación",
-        "rankByInvite": "sacar nueva clasificación",
-        "rankByProfit": "ranking de ingresos",
-        "stake": "promesa",
-        "userInfo": "usuario",
-        "withdrawRechargeRate": "Ratio de ingresos por recarga"
-    },
-    "settings": {
-        "checkUpdate": "Buscar actualizaciones",
-        "checkingUpdate": "Comprobando actualizaciones...",
-        "darkMode": "modo oscuro",
-        "upToDate": "Actualmente la última versión",
-        "updating": "Actualizando..."
-    },
-    "title": {
-        "balanceRecord": "Detalles de la transacción",
-        "commissionRecords": "registro de comisiones",
-        "distribution": "centro de ingresos",
-        "myTeam": "mi equipo"
-    },
-    "tutorial": {
-        "step1": "Paso 1: escanee el código QR del recomendador, complete la información de registro y haga clic en registrarse para completar el registro",
-        "step2": "Paso 2: después del registro, guarde el código QR y compártalo con más usuarios para registrarse",
-        "step3": "Paso 3: inicie sesión en la aplicación, haga clic en el monto de recarga de la billetera",
-        "step4": "Paso 4: Selecciona o ingresa el monto a recargar por recarga",
-        "step5": "Paso 5: seleccione la sesión, haga clic en inicio y seleccione la sesión inicial. Cada usuario de la sesión principal tiene un límite de dos colecciones por día, la sesión intermedia está abierta de 4:00 p. m. a 5:00 p. La sesión avanzada está abierta de 3:00 p. m. a 4:00 p. m. todos los días.",
-        "step6": "Paso 6: Compre colecciones, si el saldo de la billetera es insuficiente, debe recargar el saldo de la billetera",
-        "step7": "Paso 7: Al confiar la colección para colocarla en los estantes en el pedido, debe pagar a la plataforma una comisión del 4%, y el rango de recolección correspondiente a la colección es del 6% del tiempo de compra.",
-        "step8": "Paso 8: si la cantidad es suficiente, puede comprar directamente la colección y luego confiarla para que se coloque en el estante",
-        "step9": "Nota: después de comprar 2 piezas, el campo principal no puede comprar colecciones la próxima vez, y cada usuario está limitado a comprar 2 piezas por día"
-    },
-    "user": {
-        "notLogin": "El usuario no ha iniciado sesión, ¿quieres iniciar sesión ahora?",
-        "profile": "editar informacion",
-        "wallet": "My bolso"
-    }
-}
+    "stopSale": "Suspensión de venta",
+    "total": "total",
+    "totalPayment": "pago real",
+    "viewOrder": "revisar orden",
+    "walletPay": "pago de billetera"
+  },
+  "product": {
+    "dailyEarning": "Ingreso diario",
+    "detail": "Detalles de producto",
+    "hot": "Caliente rompiendo…",
+    "nowPrice": "Precio actual",
+    "owner": "titular actual",
+    "priceNow": "precio actual",
+    "riseDesc": "Ingreso diario",
+    "search": "buscar",
+    "searchNo": "No se encontraron productos ~",
+    "searchPla": "Ingrese las palabras clave de búsqueda",
+    "start": "{hora} abierto",
+    "tag": "ilustraciones digitales",
+    "tomorrowBuy": "Disponible mañana",
+    "delayTips": "Esta colección se está enfriando, ¡puedes ir a una sesión superior para verla!",
+    "soldOut": "Agotado"
+  },
+  "rank": {
+    "inviteNum": "nuevos reclutas",
+    "profit": "ingreso",
+    "profitInfo": "Información de ganancias",
+    "rank": "clasificación",
+    "rankByInvite": "sacar nueva clasificación",
+    "rankByProfit": "ranking de ingresos",
+    "stake": "promesa",
+    "userInfo": "usuario",
+    "withdrawRechargeRate": "Ratio de ingresos por recarga"
+  },
+  "settings": {
+    "checkUpdate": "Buscar actualizaciones",
+    "checkingUpdate": "Comprobando actualizaciones...",
+    "darkMode": "modo oscuro",
+    "upToDate": "Actualmente la última versión",
+    "updating": "Actualizando..."
+  },
+  "title": {
+    "balanceRecord": "Detalles de la transacción",
+    "commissionRecords": "registro de comisiones",
+    "distribution": "centro de ingresos",
+    "myTeam": "mi equipo"
+  },
+  "tutorial": {
+    "step1": "Paso 1: escanee el código QR del recomendador, complete la información de registro y haga clic en registrarse para completar el registro",
+    "step2": "Paso 2: después del registro, guarde el código QR y compártalo con más usuarios para registrarse",
+    "step3": "Paso 3: inicie sesión en la aplicación, haga clic en el monto de recarga de la billetera",
+    "step4": "Paso 4: Selecciona o ingresa el monto a recargar por recarga",
+    "step5": "Paso 5: seleccione la sesión, haga clic en inicio y seleccione la sesión inicial. Cada usuario de la sesión principal tiene un límite de dos colecciones por día, la sesión intermedia está abierta de 4:00 p. m. a 5:00 p. La sesión avanzada está abierta de 3:00 p. m. a 4:00 p. m. todos los días.",
+    "step6": "Paso 6: Compre colecciones, si el saldo de la billetera es insuficiente, debe recargar el saldo de la billetera",
+    "step7": "Paso 7: Al confiar la colección para colocarla en los estantes en el pedido, debe pagar a la plataforma una comisión del 4%, y el rango de recolección correspondiente a la colección es del 6% del tiempo de compra.",
+    "step8": "Paso 8: si la cantidad es suficiente, puede comprar directamente la colección y luego confiarla para que se coloque en el estante",
+    "step9": "Nota: después de comprar 2 piezas, el campo principal no puede comprar colecciones la próxima vez, y cada usuario está limitado a comprar 2 piezas por día"
+  },
+  "user": {
+    "notLogin": "El usuario no ha iniciado sesión, ¿quieres iniciar sesión ahora?",
+    "profile": "editar informacion",
+    "wallet": "My bolso"
+  },
+  "vip": {}
+}

+ 17 - 0
src/locales/zh.json

@@ -192,6 +192,23 @@
         "user": "用户",
         "username": "用户名"
     },
+    "vip": {
+        "title": "尊贵的会员",
+        "time": "到期时间:",
+        "btn": "续费",
+        "btn1": "充值",
+        "rights": "权益",
+        "auto": "自动收购",
+        "isOpen": "已开启",
+        "isClose": "未开启",
+        "recharge": "充值会员",
+        "tips": "享受自动收购权益",
+        "day": "天",
+        "noVip": "无会员",
+        "expired":"会员已过期",
+        "TopUp":"充值会员享权益",
+        "lost":"已失去会员权益{day}天"
+    },
     "news": {
         "newsNull": "没有任何新闻哦~"
     },

+ 5 - 0
src/styles/fonts.less

@@ -7,3 +7,8 @@
     font-family: 'alibabaPuHui';
     src: url(/fonts/alibabaPuHui.ttf);
 }
+
+@font-face {
+    font-family: 'AlimamaShuHeiTi';
+    src: url(/fonts/AlimamaShuHeiTi-Bold.ttf);
+}

+ 56 - 0
src/views/HomePage.vue

@@ -158,6 +158,18 @@
                 </div>
             </template>
 
+            <div class="vip-content">
+                <img class="vip-bg" src="@/assets/png-cishu.png" alt="" />
+                <div class="vip-box">
+                    <img class="icon" src="@/assets/png-huiyuan.png" alt="" />
+                    <div class="num">
+                        <img src="@/assets/icon-anniu.png" alt="" />
+                        <span>10</span>
+                    </div>
+                    <span>times left</span>
+                </div>
+            </div>
+
             <div class="tools">
                 <!-- <div class="tool">
                     <img src="../assets/home_icon_pingtaixieyi.png" alt="" />
@@ -740,4 +752,48 @@ ion-content {
         transform: translateY(-50%);
     }
 }
+
+.vip-content {
+    position: absolute;
+    left: 125px;
+    top: calc(var(--ion-safe-area-top) + 380px);
+    .vip-bg {
+        width: 120px;
+        height: 28px;
+    }
+    span {
+        font-size: 11px;
+        font-weight: bold;
+        color: #0044b4;
+        line-height: 12px;
+    }
+    .vip-box {
+        position: absolute;
+        top: 3px;
+        left: 3px;
+        right: 0;
+        height: 22px;
+        .f();
+        .icon {
+            width: 18px;
+            height: 18px;
+        }
+
+        .num {
+            position: relative;
+            margin: 0 4px 0 3px;
+            img {
+                width: 28px;
+                height: 18px;
+                display: block;
+            }
+            span {
+                position: absolute;
+                left: 50%;
+                top: 50%;
+                transform: translate(-50%, -50%);
+            }
+        }
+    }
+}
 </style>

+ 481 - 1
src/views/MinePage.vue

@@ -4,7 +4,10 @@
             <div class="user-top">
                 <img class="userInfo-bg" src="../assets/userBg.png" alt="" />
                 <div class="userInfo" v-if="user" @click="goSetting">
-                    <van-image width="60" height="60" radius="60" :src="user.avatar"></van-image>
+                    <div class="avatar">
+                        <van-image width="60" height="60" radius="60" :src="user.avatar"></van-image>
+                        <img v-if="isVip" src="@/assets/icon-huiyuan-user.png" alt="" class="vip-icon" />
+                    </div>
 
                     <div class="name">
                         <span>{{ user.nickname }}</span>
@@ -131,6 +134,38 @@
                 </van-cell>
             </van-cell-group> -->
 
+            <div class="vip-box">
+                <img v-if="isVip" src="@/assets/png-huiyuan-bg.png" alt="" class="bg" />
+                <img v-else src="@/assets/png-huiyuan-bg-not.png" alt="" class="bg" />
+                <div class="vip-content">
+                    <div class="vip-top">
+                        <img v-if="isVip" src="@/assets/icon-huiyuan.png" alt="" class="icon" />
+                        <img v-else src="@/assets/icon-huiyuan-not.png" alt="" class="icon" />
+                        <div class="vip-info">
+                            <div class="text1">{{ vipTitle }}</div>
+                            <div class="text2">{{ vipTime }}</div>
+                        </div>
+                        <div class="btn" @click="showRechargeModal = true">
+                            <img v-if="isVip" src="@/assets/icon-anniu.png" alt="" />
+                            <img v-else src="@/assets/icon-anniu-not.png" alt="" />
+                            <span>{{ isVip ? $t('vip.btn') : $t('balance.recharge') }}</span>
+                        </div>
+                    </div>
+                    <div class="vip-bottom">
+                        <div class="btn">
+                            <img v-if="isVip" src="@/assets/icon-kapian.png" alt="" />
+                            <img v-else src="@/assets/icon-kapian-not.png" alt="" />
+                            <span>{{ $t('vip.rights') }}</span>
+                        </div>
+                        <div class="tips">
+                            {{ $t('vip.auto') }}
+                            <span>({{ checked ? $t('vip.isOpen') : $t('vip.isClose') }})</span>
+                        </div>
+                        <van-switch :disabled="!isVip" v-model="checked" />
+                    </div>
+                </div>
+            </div>
+
             <van-cell-group class="menu" :border="false">
                 <van-cell :title="$t('user.wallet')" is-link :to="{ name: 'wallet' }" :border="false">
                     <template #icon>
@@ -180,6 +215,59 @@
                     </template>
                 </van-cell>
             </van-cell-group>
+
+            <ion-modal
+                id="modal-withdraw"
+                class="modal"
+                :is-open="showRechargeModal"
+                :initial-breakpoint="breakpoint"
+                :breakpoints="[0, breakpoint]"
+                @didDismiss="showRechargeModal = false"
+            >
+                <ion-content class="modal-content" :style="{ height: `${breakpoint * 100}%` }">
+                    <div class="modal-box">
+                        <div class="bg"></div>
+                        <div class="modal-page">
+                            <div class="head">
+                                <div class="title">
+                                    <div class="text1">{{ $t('vip.recharge') }}</div>
+                                    <div class="text2">{{ $t('vip.tips') }}</div>
+                                </div>
+                                <div class="close" @click="showRechargeModal = false">
+                                    <img src="@/assets/icon_close2.png" alt="" />
+                                </div>
+                            </div>
+                            <div class="chooseBtns" :class="{ 'large-btn': vipList.length <= 3 }">
+                                <div
+                                    class="choose-btn"
+                                    :class="{ prim: chooseVip === item.id }"
+                                    v-for="(item, index) in vipList"
+                                    :key="index"
+                                    @click="chooseVip = item.id"
+                                >
+                                    <div class="choose-btn-bg">
+                                        <div class="text1">{{ item.validityPeriod }}{{ $t('vip.day') }}</div>
+                                        <div class="text2">
+                                            <small>{{ $t('balance.symbol') }}</small
+                                            >{{ item.price }}
+                                        </div>
+                                    </div>
+                                </div>
+                            </div>
+
+                            <div class="wallet">
+                                <img class="icon" src="@/assets/info_icon_qianbao.png" alt="" />
+                                <span>{{ $t('order.walletPay') }}</span>
+                                <img class="next" src="@/assets/icon_gouxuan_pre1.png" alt="" />
+                            </div>
+
+                            <div class="footer">
+                                <van-button type="primary" block @click="recharge">{{ $t('order.payNow') }}</van-button>
+                            </div>
+                        </div>
+                    </div>
+                </ion-content>
+            </ion-modal>
         </ion-content>
     </ion-page>
 </template>
@@ -193,6 +281,10 @@ import { ref, watch } from 'vue'
 import { http } from '@/plugins/http'
 import { onIonViewWillEnter } from '@ionic/vue'
 import intoIcon from '@/assets/svgs/icon_inter.svg'
+import { useWindowSize } from '@vueuse/core'
+import { useI18n } from 'vue-i18n'
+import { differenceInDays, format } from 'date-fns'
+import Toast from '@/utils/toast'
 
 const userStore = useUserStore()
 const user = computed(() => {
@@ -223,6 +315,7 @@ watch(user, val => {
 })
 onIonViewWillEnter(() => {
     getBalance()
+    getVip()
 })
 const balanceText = computed(() => {
     if (balance.value && balance.value.balance != undefined) {
@@ -230,6 +323,86 @@ const balanceText = computed(() => {
     }
     return '-'
 })
+
+const showRechargeModal = ref(false)
+const { height: windowHeight } = useWindowSize()
+const breakpoint = computed(() => {
+    return Number((530 / windowHeight.value).toFixed(2))
+})
+
+const vipList = ref([])
+const chooseVip = ref(0)
+
+const checked = ref(false)
+const vipUserInfo = ref(null)
+function getVip() {
+    if (user.value == null) return
+    http.post('/vip/list').then(res => {
+        vipList.value = res
+        if (res.length > 0) {
+            chooseVip.value = res[0].id
+        }
+    })
+
+    http.get('/vip/getUserVipInfo/' + user.value.id).then(res => {
+        vipUserInfo.value = res
+    })
+}
+
+function recharge() {
+    Toast.loading({
+        message: t('common.loading') + '...',
+        forbidClick: true
+    })
+    http.post('/vip/createOrder', {
+        vipId: chooseVip.value
+    })
+        .then(res => {
+            return http.post('/vip/balancePay', {
+                vipOrderId: res.id
+            })
+        })
+        .then(res => {
+            Toast.clear()
+            showRechargeModal.value = false
+            getBalance()
+            getVip()
+            Toast.success(t('blf.sucess'))
+        })
+        .catch(e => {
+            if (e.error) {
+                Toast(e.error)
+            }
+        })
+}
+
+const isVip = computed(() => {
+    return vipUserInfo.value && vipUserInfo.value.status === 'EFFECTIVE'
+})
+const { t } = useI18n()
+const vipTitle = computed(() => {
+    if (isVip.value) {
+        return t('vip.title')
+    } else {
+        if (vipUserInfo.value) {
+            return t('vip.expired')
+        } else {
+            return t('vip.noVip')
+        }
+    }
+})
+const vipTime = computed(() => {
+    if (isVip.value) {
+        return t('vip.time') + ' ' + format(new Date(vipUserInfo.value.endTime), 'yyyy-mm-dd', new Date())
+    } else {
+        if (vipUserInfo.value) {
+            let day = differenceInDays(new Date(), new Date(vipUserInfo.value.endTime))
+            return t('vip.lost', { day: day })
+        } else {
+            return t('vip.TopUp')
+        }
+    }
+})
 </script>
 
 <style lang="less" scoped>
@@ -336,6 +509,17 @@ ion-content {
             border-radius: 60px;
         }
     }
+    .avatar {
+        position: relative;
+    }
+    .vip-icon {
+        width: 24px;
+        height: 24px;
+        position: absolute;
+        bottom: 0;
+        right: 0;
+        z-index: 20;
+    }
     .icon {
         width: 15px;
         height: 15px;
@@ -484,4 +668,300 @@ ion-content {
     height: 24px;
     color: #9fbfb1;
 }
+
+.vip-box {
+    padding: 0 20px 20px 18px;
+    position: relative;
+    .bg {
+        width: 100%;
+        height: 100px;
+        display: block;
+    }
+
+    .vip-content {
+        position: absolute;
+        top: 0;
+        left: 20px;
+        right: 20px;
+        bottom: 20px;
+    }
+
+    .vip-top {
+        .f();
+        padding: 7px 10px;
+        overflow: hidden;
+        .icon {
+            width: 46px;
+            height: 46px;
+        }
+
+        .vip-info {
+            flex-grow: 1;
+            padding: 0 10px;
+            overflow: hidden;
+            .text1 {
+                font-size: 14px;
+                font-family: AlimamaShuHeiTi;
+                color: #0044b4;
+                line-height: 24px;
+                overflow: hidden;
+                white-space: nowrap;
+                text-overflow: ellipsis;
+            }
+
+            .text2 {
+                font-size: 12px;
+                color: #0044b4;
+                line-height: 20px;
+                overflow: hidden;
+                white-space: nowrap;
+                text-overflow: ellipsis;
+            }
+        }
+
+        .btn {
+            position: relative;
+            flex-shrink: 0;
+            img {
+                width: 82px;
+                display: block;
+            }
+            span {
+                font-size: 12px;
+                font-family: AlimamaShuHeiTi;
+                color: #0044b4;
+                line-height: 24px;
+                position: absolute;
+                top: 50%;
+                left: 50%;
+                transform: translate(-50%, -50%);
+                text-transform: uppercase;
+            }
+        }
+    }
+
+    .vip-bottom {
+        .f();
+        padding: 6px 8px;
+        .btn {
+            position: relative;
+            img {
+                width: 50px;
+                display: block;
+            }
+            span {
+                font-size: 10px;
+                font-weight: bold;
+                color: #0044b4;
+                line-height: 10px;
+                position: absolute;
+                top: 50%;
+                left: 50%;
+                transform: translate(-50%, -50%);
+            }
+        }
+
+        .tips {
+            flex-grow: 1;
+            font-size: 12px;
+            font-weight: bold;
+            color: #0044b4;
+            line-height: 24px;
+            padding: 0 8px;
+            span {
+                font-size: 10px;
+            }
+        }
+
+        .van-switch {
+            --van-switch-on-background: #0044b4;
+            --van-switch-background: rgba(0, 68, 180, 0.4);
+            --van-switch-width: 56px;
+            --van-switch-height: 20px;
+            --van-switch-node-size: 26px;
+            border: 1px solid #ffffff;
+            /deep/&.van-switch--on {
+                border-color: #0044b4;
+            }
+            /deep/.van-switch__node {
+                height: 16px;
+                border-radius: 16px;
+            }
+        }
+    }
+}
+
+.modal-box {
+    border-radius: 16px 16px 0px 0px;
+    position: relative;
+    padding-top: 2px;
+    overflow: hidden;
+    height: 100%;
+
+    .bg {
+        position: absolute;
+        top: 0;
+        left: 0;
+        right: 0;
+        z-index: 0;
+        height: 16px;
+        background: linear-gradient(180deg, rgba(209, 254, 204, 1), rgba(77, 245, 190, 0) 172px);
+    }
+
+    // .modal-box {
+    //     background-color: #2c302f;
+    //     border-radius: 16px 16px 0px 0px;
+    //     position: relative;
+    //     z-index: 1;
+    //     margin-top: 2px;
+    // }
+
+    .modal-page {
+        background-color: #2c302f;
+        border-radius: 16px 16px 0px 0px;
+        position: relative;
+        z-index: 1;
+        height: 100%;
+        .head {
+            .f();
+            justify-content: space-between;
+            padding: 16px 16px;
+            .title {
+                .text1 {
+                    font-size: 18px;
+                    font-family: AlimamaShuHeiTi;
+                    color: #ffffff;
+                    line-height: 24px;
+                    background: linear-gradient(135deg, #deffce 0%, #85f9c4 51%, #3df3bc 100%);
+                    -webkit-background-clip: text;
+                    -webkit-text-fill-color: transparent;
+                }
+
+                .text2 {
+                    font-size: 12px;
+                    color: #ffffff;
+                    line-height: 17px;
+                }
+            }
+
+            .close {
+                img {
+                    width: 22px;
+                    height: 22px;
+                    display: block;
+                }
+            }
+        }
+
+        .chooseBtns {
+            padding: 8px 16px 20px;
+            .f();
+            overflow-x: auto;
+            .choose-btn {
+                position: relative;
+                width: calc((100vw - 32px - 22px - 22px - 30px) / 3);
+                height: 110px;
+                border-radius: 8px;
+                overflow: hidden;
+                margin-right: 22px;
+                flex-shrink: 0;
+
+                &::after {
+                    content: '';
+                    position: absolute;
+                    top: 0;
+                    right: 0;
+                    bottom: 0;
+                    left: 0;
+                    background-color: #7d7d7d;
+                    z-index: 0;
+                }
+
+                .choose-btn-bg {
+                    position: absolute;
+                    top: 1px;
+                    right: 1px;
+                    left: 1px;
+                    bottom: 1px;
+                    background: #3c403f;
+                    z-index: 1;
+                    border-radius: 8px;
+                    .f-col();
+                    align-items: center;
+                    justify-content: center;
+                    .text1 {
+                        font-size: 16px;
+                        font-weight: bold;
+                        color: #ffffff;
+                        line-height: 24px;
+                    }
+
+                    .text2 {
+                        .f();
+                        // align-items: flex-end;
+                        font-size: 26px;
+                        font-weight: bold;
+                        color: #c5f2ac;
+                        line-height: 30px;
+                        margin-top: 4px;
+                        background: linear-gradient(180deg, #dcff91 0%, #5ff6c0 100%),
+                            linear-gradient(135deg, #deffce 0%, #85f9c4 51%, #3df3bc 100%);
+                        -webkit-background-clip: text;
+                        -webkit-text-fill-color: transparent;
+                        small {
+                            font-size: 16px;
+                            margin-top: 5px;
+                        }
+                    }
+                }
+
+                &:last-child {
+                    margin-right: 0;
+                }
+                &.prim {
+                    &::after {
+                        background: linear-gradient(180deg, rgba(211, 254, 204, 1), rgba(75, 244, 189, 1));
+                    }
+                    .choose-btn-bg {
+                        background: #1a5244;
+                    }
+                }
+            }
+
+            &.large-btn {
+                .choose-btn {
+                    width: calc((100vw - 32px - 22px - 22px) / 3);
+                }
+            }
+        }
+        .wallet {
+            padding: 12px 16px 50px;
+            .f();
+            .icon {
+                width: 24px;
+                height: 24px;
+            }
+            span {
+                font-size: 14px;
+                font-weight: bold;
+                color: #ffffff;
+                line-height: 24px;
+                flex-grow: 1;
+                margin-left: 10px;
+            }
+            .next {
+                width: 24px;
+                height: 24px;
+            }
+        }
+
+        .footer {
+            position: absolute;
+            bottom: 0;
+            left: 0;
+            right: 0;
+            padding: 9px 27px;
+        }
+    }
+}
 </style>