xiongzhu 3 年 前
コミット
9ec608646c

+ 1 - 0
package.json

@@ -32,6 +32,7 @@
     "@ionic/vue": "^6.3.8",
     "@ionic/vue-router": "^6.3.8",
     "@vant/area-data": "^1.3.2",
+    "@vueuse/components": "^9.10.0",
     "@vueuse/core": "^9.6.0",
     "axios": "^1.2.0",
     "capacitor-openinstall": "https://github.com/x1ongzhu/capacitor-openinstall.git",

+ 3 - 3
src/components/OrderItem.vue

@@ -12,7 +12,7 @@
         </div>
 
         <div class="order-content" @click="goDetail">
-            <van-image class="suk-img" width="80" height="80" fit="fill" :src="pic" />
+            <van-image class="suk-img" width="80" height="80" fit="cover" :src="pic" />
 
             <div class="order-text">
                 <div class="van-ellipsis text1">{{ getLocaleString(productInfo.name) }}</div>
@@ -63,9 +63,9 @@
             </template>
 
             <template v-else-if="info.status == 'CONFIRMED'">
-                <van-button color="#AAACAD" plain size="small" @click="applyShip">
+                <!-- <van-button color="#AAACAD" plain size="small" @click="applyShip">
                     {{ $t('order.applyShip') }}
-                </van-button>
+                </van-button> -->
                 <van-button type="primary" size="small" @click="show = true" v-if="delegationActive">
                     {{ $t('delegate.title') }}
                 </van-button>

+ 0 - 156
src/components/Record.vue

@@ -1,156 +0,0 @@
-<template>
-    <div class="record">
-        <div class="top">
-            <span>申请时间:{{ info.createdAt }}</span>
-            <span>{{ withdrawStatus[info.status] }}</span>
-        </div>
-        <div class="money">
-            <span>+{{ info.amount }}</span>
-            <span>元</span>
-        </div>
-        <div class="moeny-list">
-            <div class="money-item">
-                <div class="val">{{ info.amount }}</div>
-                <div class="name">申请佣金</div>
-            </div>
-            <div class="money-item">
-                <div class="val">{{ info.auditAmount || info.amount }}</div>
-                <div class="name">实际金额</div>
-            </div>
-            <div class="money-item">
-                <div class="val">0</div>
-                <div class="name">提现手续费</div>
-            </div>
-        </div>
-        <van-button
-            class="button"
-            color="#FF8F00"
-            block
-            plain
-            hairline
-            @click="goNext('commissionRecordList', { id: info.id })"
-        >
-            <div class="button-content">
-                <span>查看提现详情</span>
-                <img src="../assets/icon_inter_pre.png" class="next" alt="" />
-            </div>
-        </van-button>
-    </div>
-</template>
-<script>
-import { mapState } from 'pinia'
-import { useUserStore } from '@/stores/user'
-import { withdrawStatus } from '../status'
-export default {
-    props: {
-        info: {
-            type: Object,
-            default: () => {
-                return {}
-            }
-        }
-    },
-    data() {
-        return {
-            withdrawStatus
-        }
-    },
-    computed: {
-        ...mapState(useUserStore, ['user'])
-    }
-}
-</script>
-<style lang="less" scoped>
-.record {
-    margin: 0 0 10px;
-    background: rgba(var(--ion-text-color-rgb), 1);
-    border-radius: 2px;
-    padding: 0 15px;
-}
-
-.button {
-    height: 36px;
-    border-color: var(--ion-color-step-0) !important;
-    font-size: 12px;
-    line-height: 36px;
-
-    .next {
-        width: 24px;
-        height: 24px;
-    }
-
-    .button-content {
-        display: flex;
-        align-items: center;
-        justify-content: center;
-        border-top: 1px solid #f2f4f5;
-    }
-}
-
-.top {
-    height: 44px;
-    display: flex;
-    justify-content: space-between;
-    align-items: center;
-    font-size: 13px;
-    color: rgba(102, 102, 102, 1);
-    line-height: 18px;
-    span {
-        &:last-child {
-            font-size: 13px;
-            font-weight: bold;
-            color: rgba(255, 143, 0, 1);
-            line-height: 18px;
-        }
-    }
-}
-
-.money {
-    height: 64px;
-    background: rgba(255, 143, 0, 0.12);
-    border-radius: 2px;
-    display: flex;
-    align-items: center;
-    justify-content: center;
-    span {
-        &:first-child {
-            font-size: 24px;
-            font-weight: bold;
-            color: rgba(var(--ion-color-light-contrast-rgb), 1);
-            line-height: 28px;
-        }
-        &:last-child {
-            font-size: 12px;
-            font-weight: bold;
-            color: rgba(var(--ion-color-light-contrast-rgb), 1);
-            line-height: 17px;
-            margin-left: 4px;
-        }
-    }
-}
-.moeny-list {
-    display: flex;
-    align-items: center;
-    height: 81px;
-
-    .money-item {
-        width: 33%;
-        display: flex;
-        flex-direction: column;
-        align-items: center;
-        .val {
-            font-size: 14px;
-            font-weight: bold;
-            color: rgba(var(--ion-color-light-contrast-rgb), 1);
-            line-height: 20px;
-        }
-
-        .name {
-            font-size: 12px;
-            color: rgba(102, 102, 102, 1);
-            line-height: 17px;
-            margin-top: 4px;
-        }
-    }
-}
-</style>

+ 0 - 140
src/components/RecordOrder.vue

@@ -1,140 +0,0 @@
-<template>
-    <div class="orderInfo">
-        <div class="top">
-            <!-- <div class="label">一级分销</div> -->
-            <div class="value">{{ commissionStatus[status] }}</div>
-        </div>
-        <div class="center">
-            <van-image class="suk-img" width="50" height="50" fit="fill" :src="info.pic" />
-
-            <div class="right">
-                <div class="text1">{{ info.name }}</div>
-                <div class="text2">{{ $t('balance.symbol') }}{{ info.price }}</div>
-            </div>
-            <div class="num">×1</div>
-        </div>
-
-        <div class="order-info">
-            <div class="order-item">订单编号:{{ info.orderId }}</div>
-            <div class="order-item">下单时间:{{ info.createdAt }}</div>
-        </div>
-
-        <div class="money">
-            <span>申请佣金: {{ info.commission }} 元</span>
-            <span>审核佣金:{{ info.commission }} 元</span>
-        </div>
-    </div>
-</template>
-<script>
-import { mapState } from 'pinia'
-import { useUserStore } from '@/stores/user'
-import { commissionStatus } from '../status'
-export default {
-    name: 'orderInfo',
-    props: {
-        info: {
-            type: Object,
-            default: () => {
-                return {}
-            }
-        },
-        status: {
-            type: String,
-            default: ''
-        }
-    },
-    data() {
-        return {
-            commissionStatus
-        }
-    },
-    computed: {
-        ...mapState(useUserStore, ['user'])
-    }
-}
-</script>
-<style lang="less" scoped>
-.orderInfo {
-    background: rgba(var(--ion-text-color-rgb), 1);
-    border-radius: 2px;
-    padding: 0 15px 15px;
-    margin-bottom: 10px;
-}
-
-.top {
-    position: relative;
-    height: 44px;
-    text-align: right;
-    border-bottom: 1px solid #f2f4f5;
-    .label {
-        width: 70px;
-        height: 24px;
-        background: rgba(255, 143, 0, 1);
-        border-radius: 0px 100px 100px 0px;
-        font-size: 12px;
-        color: rgba(var(--ion-text-color-rgb), 1);
-        line-height: 24px;
-        text-align: center;
-        position: absolute;
-        left: 0;
-        top: 10px;
-    }
-
-    .value {
-        font-size: 13px;
-        font-weight: bold;
-        color: rgba(255, 143, 0, 1);
-        line-height: 44px;
-    }
-}
-.center {
-    display: flex;
-    // align-items: center;
-    padding: 15px 0 0;
-    .right {
-        flex-grow: 1;
-        margin-left: 10px;
-        .text1 {
-            font-size: 14px;
-            color: rgba(var(--ion-color-light-contrast-rgb), 1);
-            line-height: 20px;
-        }
-        .text2 {
-            font-size: 12px;
-            color: rgba(var(--ion-color-light-contrast-rgb), 1);
-            line-height: 17px;
-            margin-top: 5px;
-        }
-    }
-
-    .num {
-        font-size: 14px;
-        color: rgba(170, 172, 173, 1);
-        line-height: 20px;
-        align-self: flex-end;
-    }
-}
-
-.order-info {
-    margin-top: 10px;
-    .order-item {
-        font-size: 12px;
-        color: rgba(102, 102, 102, 1);
-        line-height: 17px;
-        &:not(:last-child) {
-            margin-bottom: 5px;
-        }
-    }
-}
-
-.money {
-    padding: 15px 0 0;
-    font-size: 14px;
-    font-weight: bold;
-    color: rgba(var(--ion-color-light-contrast-rgb), 1);
-    line-height: 20px;
-    span {
-        margin-right: 20px;
-    }
-}
-</style>

+ 251 - 240
src/locales/en.json

@@ -1,243 +1,254 @@
 {
-  "balance": {
-    "availableWidthdrawAmount": "Amount that can be withdrawn",
-    "balance": "Account Balance",
-    "chooseAmount": "select amount",
-    "confirmWithdraw": "Confirm withdrawal",
-    "inputCustomAmount": "Please enter a custom amount",
-    "realReceipt": "Actual account",
-    "recharge": "recharge",
-    "record": {
-      "commission": "commission",
-      "pay": "to pay",
-      "receipt": "collect money",
-      "recharge": "recharge",
-      "withdraw": "withdraw"
-    },
-    "symbol": "$",
-    "totalWithdraw": "Cumulative withdrawal",
-    "unit": "Yuan",
-    "withdraw": "withdraw",
-    "withdrawAmount": "Withdrawal Amount",
-    "withdrawAmountError": "Please enter the correct withdrawal amount",
-    "withdrawFee": "Withdrawal fee",
-    "withdrawFeeTip0": "Note: 1/3 of the total transaction fee for the purchase is",
-    "withdrawFeeTip1": ", the excess handling fee",
-    "withdrawInputTip": "Please enter the withdrawal amount",
-    "withdrawModalTitle": "Apply for withdrawal",
-    "withdrawSuccess": "Successful withdrawal",
-    "withdrawing": "Withdrawing",
-    "rechargeMax": "The maximum recharge amount is {value}",
-    "rechargeMin": "The minimum recharge amount is {value}"
-  },
-  "cancel": "Cancel",
-  "common": {
-    "alert": "hint",
+    "balance": {
+        "availableWidthdrawAmount": "Amount that can be withdrawn",
+        "balance": "Account Balance",
+        "chooseAmount": "select amount",
+        "confirmWithdraw": "Confirm withdrawal",
+        "inputCustomAmount": "Please enter a custom amount",
+        "realReceipt": "Actual account",
+        "recharge": "recharge",
+        "record": {
+            "commission": "commission",
+            "pay": "to pay",
+            "receipt": "collect money",
+            "recharge": "recharge",
+            "withdraw": "withdraw"
+        },
+        "symbol": "$",
+        "totalWithdraw": "Cumulative withdrawal",
+        "unit": "Yuan",
+        "withdraw": "withdraw",
+        "withdrawAmount": "Withdrawal Amount",
+        "withdrawAmountError": "Please enter the correct withdrawal amount",
+        "withdrawFee": "Withdrawal fee",
+        "withdrawFeeTip0": "Note: 1/3 of the total transaction fee for the purchase is",
+        "withdrawFeeTip1": ", the excess handling fee",
+        "withdrawInputTip": "Please enter the withdrawal amount",
+        "withdrawModalTitle": "Apply for withdrawal",
+        "withdrawSuccess": "Successful withdrawal",
+        "withdrawing": "Withdrawing",
+        "rechargeMax": "The maximum recharge amount is {value}",
+        "rechargeMin": "The minimum recharge amount is {value}"
+    },
     "cancel": "Cancel",
-    "confirm": "Sure",
-    "eula": "Platform",
-    "guide": "Tutorial",
-    "home": "Home",
-    "loadFinish": "download finished",
-    "loading": "Loading",
-    "mine": "Mine",
-    "more": "More",
-    "news": "News",
-    "pullRefresh": "Pull down to refresh",
-    "rank": "leaderboard",
-    "register": "register",
-    "updateSuccess": "update completed",
-    "profit": "Commission",
-    "noRecords": "No records",
-    "notAvailable": "Not available",
-    "wait": "stay tuned"
-  },
-  "delegate": {
-    "tip": "The consignment sale has not started yet, it will start today at ${time}",
-    "title": "Consignment",
-    "increase": "mark up",
-    "originalPrice": "original price",
-    "payServiceCharge": "pay processing fees",
-    "sellPrice": "selling price",
-    "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"
-  },
-  "distribution": {
-    "commission": "commission",
-    "joinTeamAt": "time to join the team",
-    "myInvitor": "my recommender",
-    "myProfit": "Income",
-    "orderNum": "number of order",
-    "profitDetails": "Revenue Details",
-    "qrCode": "my promo code",
-    "teamNum": "Team size",
-    "totalProfit": "Total revenue",
-    "viewDetail": "view details",
-    "viewTeam": "view team",
-    "saveImg": "save Picture",
-    "empty": "no yet",
-    "invite": "To invite"
-  },
-  "home": {
-    "all": "All"
-  },
-  "login": "Log in",
-  "loginPage": {
-    "agreement": "User Agreement",
-    "codePla": "please enter verification code",
-    "goRegister": "Sign up now",
-    "invitorPla": "Invitation code (optional)",
-    "isRead": "have read and agreed",
-    "loginByCode": "Verification code login",
-    "loginNow": "Already have an account, log in now",
-    "loginPwd": "password login",
-    "loginSuceess": "login successful",
-    "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",
-    "username": "Username",
-    "enterUsername": "Enter your username",
-    "psd": "password",
-    "psdAgainError": "The two passwords entered are inconsistent",
-    "psdAgainPla": "please enter password again",
-    "psdPla": "please enter password",
-    "register": "Register an account",
-    "registerSuccess": "registration success",
-    "sendCode": "Send code",
-    "sended": "Sented",
-    "psdEorror": "Wrong format of password",
-    "nameError": "Account length 6-20, can only contain numbers, letters and underscores, not pure numbers"
-  },
-  "mine": {
-    "address": "Address",
-    "avatar": "Avatar",
-    "bankCard": "Bank Card",
-    "bindPhone": "Bind Phone",
-    "female": "Female",
-    "logout": "sign out",
-    "male": "male",
-    "newProfit": "new income",
-    "nickname": "Nick Name",
-    "noBind": "unbound",
-    "noLogin": "not logged in",
-    "noSetting": "not set",
-    "setting": "Setting",
-    "sex": "Gender",
-    "user": "User",
-    "common": "Common Functions",
-    "nickPlac": "Please enter a nickname",
-    "sure": "Confirm the changes"
-  },
-  "news": {
-    "newsNull": "There is no news~"
-  },
-  "order": {
-    "buyNow": "Buy Now",
-    "createSuccess": "Order successfully created",
-    "createdAt": "order time",
-    "detail": "order details",
-    "id": "order number",
-    "my": "My Order",
-    "payInfo": "Payment Information",
-    "payMethod": "payment method",
-    "payMethodName": {
-      "balance": "balance payment"
-    },
-    "payNow": "pay immediately",
-    "processing": "Processing",
-    "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": "To be entrusted, it will be put on the shelves within 24 hours after entrusting",
-      "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": "to be delivered",
-      "RECEIVED": "received",
-      "SELLING": "In entrustment, 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": "To be confirmed receipt",
-      "SOLD_NOT_PAID": "pending buyer payment"
-    },
-    "total": "total",
-    "totalPayment": "actual payment",
-    "walletPay": "wallet payment",
-    "applyShip": "Apply for delivery",
-    "confirmReceipt": "confirm the receipt of goods",
-    "countDown": "Automatically cancel the order when the payment countdown expires",
-    "hasProblem": "Encounter problems?",
-    "payAt": "Payment time",
-    "viewOrder": "check order",
-    "mint": "Minute",
-    "second": "Second",
-    "stopSale": "Suspension of sale"
-  },
-  "product": {
-    "dailyEarning": "Daily Income",
-    "detail": "Product Details",
-    "hot": "Hot snapping up…",
-    "nowPrice": "Current",
-    "owner": "Product Holder",
-    "search": "search",
-    "searchNo": "No products were found~",
-    "searchPla": "Enter search keywords",
-    "start": "back grab",
-    "tomorrowBuy": "Available",
-    "priceNow": "Current",
-    "riseDesc": "Daily Income",
-    "tag": "Digital Artwork"
-  },
-  "rank": {
-    "inviteNum": "New recruits",
-    "profitInfo": "Earnings information",
-    "rank": "Ranking",
-    "rankByInvite": "Invite Ranking",
-    "rankByProfit": "Revenue Ranking",
-    "userInfo": "User Info",
-    "withdrawRechargeRate": "Recharge revenue ratio"
-  },
-  "settings": {
-    "darkMode": "Dark Mode"
-  },
-  "title": {
-    "balanceRecord": "Transaction details",
-    "distribution": "revenue center",
-    "myTeam": "my team"
-  },
-  "user": {
-    "notLogin": "User is not logged in, do you want to log in now?",
-    "profile": "Edit Information",
-    "wallet": "My purse"
-  },
-  "blf": {
-    "has": "Remaining places",
-    "pic": "illustrate",
-    "tips": "Pledge your balance, and enjoy today's dividends through the platform's overall pledge balance ratio, and the highest daily chemical income can get 1%",
-    "buy": "snap up now"
-  },
-  "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: Log in 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"
-  }
+    "common": {
+        "alert": "hint",
+        "cancel": "Cancel",
+        "confirm": "Sure",
+        "eula": "Platform",
+        "guide": "Tutorial",
+        "home": "Home",
+        "loadFinish": "download finished",
+        "loading": "Loading",
+        "mine": "Mine",
+        "more": "More",
+        "news": "News",
+        "pullRefresh": "Pull down to refresh",
+        "rank": "leaderboard",
+        "register": "register",
+        "updateSuccess": "update completed",
+        "profit": "Commission",
+        "noRecords": "No records",
+        "notAvailable": "Not available",
+        "wait": "stay tuned",
+        "save": "Save"
+    },
+    "delegate": {
+        "tip": "The consignment sale has not started yet, it will start today at ${time}",
+        "title": "Consignment",
+        "increase": "mark up",
+        "originalPrice": "original price",
+        "payServiceCharge": "pay processing fees",
+        "sellPrice": "selling price",
+        "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"
+    },
+    "distribution": {
+        "commission": "commission",
+        "joinTeamAt": "time to join the team",
+        "myInvitor": "my recommender",
+        "myProfit": "Income",
+        "orderNum": "number of order",
+        "profitDetails": "Revenue Details",
+        "qrCode": "my promo code",
+        "teamNum": "Team size",
+        "totalProfit": "Total revenue",
+        "viewDetail": "view details",
+        "viewTeam": "view team",
+        "saveImg": "save Picture",
+        "empty": "no yet",
+        "invite": "To invite"
+    },
+    "home": {
+        "all": "All"
+    },
+    "login": "Log in",
+    "loginPage": {
+        "agreement": "User Agreement",
+        "codePla": "please enter verification code",
+        "goRegister": "Sign up now",
+        "invitorPla": "Invitation code (optional)",
+        "isRead": "have read and agreed",
+        "loginByCode": "Verification code login",
+        "loginNow": "Already have an account, log in now",
+        "loginPwd": "password login",
+        "loginSuceess": "login successful",
+        "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",
+        "username": "Username",
+        "enterUsername": "Enter your username",
+        "psd": "password",
+        "psdAgainError": "The two passwords entered are inconsistent",
+        "psdAgainPla": "please enter password again",
+        "psdPla": "please enter password",
+        "register": "Register an account",
+        "registerSuccess": "registration success",
+        "sendCode": "Send code",
+        "sended": "Sented",
+        "psdEorror": "Wrong format of password",
+        "nameError": "Account length 6-20, can only contain numbers, letters and underscores, not pure numbers"
+    },
+    "mine": {
+        "address": "Address",
+        "avatar": "Avatar",
+        "bankCard": "Bank Account",
+        "bindPhone": "Bind Phone",
+        "female": "Female",
+        "logout": "sign out",
+        "male": "male",
+        "newProfit": "new income",
+        "nickname": "Nick Name",
+        "noBind": "Not added",
+        "noLogin": "not logged in",
+        "noSetting": "not set",
+        "setting": "Setting",
+        "sex": "Gender",
+        "user": "User",
+        "common": "Common Functions",
+        "nickPlac": "Please enter a nickname",
+        "sure": "Confirm the changes"
+    },
+    "news": {
+        "newsNull": "There is no news~"
+    },
+    "order": {
+        "buyNow": "Buy Now",
+        "createSuccess": "Order successfully created",
+        "createdAt": "order time",
+        "detail": "order details",
+        "id": "order number",
+        "my": "My Order",
+        "payInfo": "Payment Information",
+        "payMethod": "payment method",
+        "payMethodName": {
+            "balance": "balance payment"
+        },
+        "payNow": "pay immediately",
+        "processing": "Processing",
+        "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": "To be entrusted, it will be put on the shelves within 24 hours after entrusting",
+            "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": "to be delivered",
+            "RECEIVED": "received",
+            "SELLING": "In entrustment, 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": "To be confirmed receipt",
+            "SOLD_NOT_PAID": "pending buyer payment"
+        },
+        "total": "total",
+        "totalPayment": "actual payment",
+        "walletPay": "wallet payment",
+        "applyShip": "Apply for delivery",
+        "confirmReceipt": "confirm the receipt of goods",
+        "countDown": "Automatically cancel the order when the payment countdown expires",
+        "hasProblem": "Encounter problems?",
+        "payAt": "Payment time",
+        "viewOrder": "check order",
+        "mint": "Minute",
+        "second": "Second",
+        "stopSale": "Suspension of sale"
+    },
+    "product": {
+        "dailyEarning": "Daily Income",
+        "detail": "Product Details",
+        "hot": "Hot snapping up…",
+        "nowPrice": "Current",
+        "owner": "Product Holder",
+        "search": "search",
+        "searchNo": "No products were found~",
+        "searchPla": "Enter search keywords",
+        "start": "back grab",
+        "tomorrowBuy": "Available",
+        "priceNow": "Current",
+        "riseDesc": "Daily Income",
+        "tag": "Digital Artwork"
+    },
+    "rank": {
+        "inviteNum": "New recruits",
+        "profitInfo": "Earnings information",
+        "rank": "Ranking",
+        "rankByInvite": "Invite Ranking",
+        "rankByProfit": "Revenue Ranking",
+        "userInfo": "User Info",
+        "withdrawRechargeRate": "Recharge revenue ratio"
+    },
+    "settings": {
+        "darkMode": "Dark Mode"
+    },
+    "title": {
+        "balanceRecord": "Transaction details",
+        "distribution": "revenue center",
+        "myTeam": "my team"
+    },
+    "user": {
+        "notLogin": "User is not logged in, do you want to log in now?",
+        "profile": "Edit Information",
+        "wallet": "My purse"
+    },
+    "blf": {
+        "has": "Remaining places",
+        "pic": "illustrate",
+        "tips": "Pledge your balance, and enjoy today's dividends through the platform's overall pledge balance ratio, and the highest daily chemical income can get 1%",
+        "buy": "snap up now"
+    },
+    "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: Log in 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"
+    },
+    "bank": {
+        "bank": "Bank",
+        "addBankCard": "Add Bank Account",
+        "cardNumber": "Card Number",
+        "cardName": "Name on Card",
+        "phone": "Phone Number",
+        "mail": "Mail",
+        "saveBankCard": "Save Bank Account",
+        "selectBank": "Select Bank"
+    }
 }

+ 20 - 9
src/locales/zh.json

@@ -25,7 +25,8 @@
         "updateSuccess": "更新成功",
         "noRecords": "暂无记录",
         "notAvailable": "暂未开放",
-        "wait": "敬请期待"
+        "wait": "敬请期待",
+        "save": "保存"
     },
     "order": {
         "id": "订单编号",
@@ -230,13 +231,23 @@
     },
     "tutorial": {
         "step1": "第一步:扫一扫推荐人二维码,填写注册信息,点击register完成注册",
-        "step2":"第二步:注册完保存二维码分享给更多用户来注册",
-        "step3":"第三步:登陆app,点击钱包充值金额",
-        "step4":"第四步:选择或者输入需要充值的金额进行充值",
-        "step5":"第五步:选择场次,点击home,选择初场次,初级场每个用户每天限购二个藏品,中级场每天下午四点到五点限时开放,高级场每天下午三点到四点开放。",
-        "step6":"第六步:购买藏品,钱包余额不足需要充值钱包余额",
-        "step7":"第七步:在订单中藏品委托上架,需要支付给平台4%的委托手续费,藏品对应的藏品幅度为购买时候的6%。",
-        "step8":"第八步:金额充足的情况下可以直接购买藏品然后委托上架",
-        "step9":"注:购买2个过后初级场就不可以在次进行购买藏品,每个用户每天限购2个"
+        "step2": "第二步:注册完保存二维码分享给更多用户来注册",
+        "step3": "第三步:登陆app,点击钱包充值金额",
+        "step4": "第四步:选择或者输入需要充值的金额进行充值",
+        "step5": "第五步:选择场次,点击home,选择初场次,初级场每个用户每天限购二个藏品,中级场每天下午四点到五点限时开放,高级场每天下午三点到四点开放。",
+        "step6": "第六步:购买藏品,钱包余额不足需要充值钱包余额",
+        "step7": "第七步:在订单中藏品委托上架,需要支付给平台4%的委托手续费,藏品对应的藏品幅度为购买时候的6%。",
+        "step8": "第八步:金额充足的情况下可以直接购买藏品然后委托上架",
+        "step9": "注:购买2个过后初级场就不可以在次进行购买藏品,每个用户每天限购2个"
+    },
+    "bank": {
+        "bank": "银行",
+        "addBankCard": "添加银行卡",
+        "cardNumber": "银行卡号",
+        "cardName": "持卡人姓名",
+        "phone": "手机号",
+        "mail": "邮箱",
+        "saveBankCard": "保存银行卡",
+        "selectBank": "选择银行"
     }
 }

+ 8 - 0
src/plugins/http.js

@@ -34,6 +34,14 @@ axiosInstance.interceptors.response.use(
 
 const http = {
     token,
+    baseURL,
+    resolve(path) {
+        let base = baseURL
+        if (!baseURL.startsWith('http')) {
+            base = new URL(baseURL, window.location.origin).href
+        }
+        return new URL(path, base).href
+    },
     setToken(_token) {
         token.value = _token
         if (_token) {

+ 11 - 6
src/router/index.js

@@ -45,11 +45,6 @@ const router = createRouter({
                         allowGuest: true
                     }
                 },
-                {
-                    path: '/distribution',
-                    name: 'distribution',
-                    component: () => import('@/views/DistributionPage.vue')
-                },
                 {
                     path: 'rank',
                     name: 'rank',
@@ -67,7 +62,7 @@ const router = createRouter({
                     }
                 },
                 {
-                    path: '/distribution1',
+                    path: 'distribution1',
                     name: 'distribution1',
                     component: () => import('@/views/DistributionPage.vue')
                 }
@@ -211,6 +206,16 @@ const router = createRouter({
             meta: {
                 allowGuest: true
             }
+        },
+        {
+            path: '/userBank',
+            name: 'userBank',
+            component: () => import('@/views/UserBankPage.vue')
+        },
+        {
+            path: '/editBank',
+            name: 'editBank',
+            component: () => import('@/views/EditBankPage.vue')
         }
     ]
 })

+ 0 - 162
src/views/CommissionRecord.vue

@@ -1,162 +0,0 @@
-<template>
-    <div class="list">
-        <div class="top">
-            <van-tabs
-                v-model="chooseTab"
-                title-active-color="#FF7900"
-                :line-height="2"
-                title-inactive-color="#000000"
-                @click="tabClick"
-            >
-                <van-tab :title="item" v-for="(item, index) in tabList" :key="index"></van-tab>
-            </van-tabs>
-        </div>
-        <van-pull-refresh v-model="refreshing" @refresh="onRefresh" success-text="刷新成功">
-            <div class="content">
-                <van-list v-model="loading" :finished="finished" :finished-text="$t('common.loadFinish')" @load="onLoad">
-                    <div class="order-list">
-                        <record v-for="(item, index) in list" :info="item" :key="index"></record>
-                        <!-- <record></record>
-             <record></record> -->
-                    </div>
-                </van-list>
-            </div>
-        </van-pull-refresh>
-    </div>
-</template>
-<script>
-import { mapState } from 'pinia'
-import { useUserStore } from '@/stores/user'
-import record from '@/components/Record.vue'
-export default {
-    name: 'CommissionRecord',
-    data() {
-        return {
-            chooseTab: 0,
-            priceDirection: 0,
-            list: [],
-            refreshing: false,
-            loading: false,
-            finished: false,
-            tabList: ['全部', '待审核', '待打款', '已打款', '无效'],
-            status: ['', 'PENDING', 'WAIT_TRANSFER', 'TRANSFERRED', 'CANCELED'],
-            page: 0,
-            size: 20
-        }
-    },
-    computed: {
-        ...mapState(useUserStore, ['user'])
-    },
-    created() {
-        this.onLoad()
-    },
-    methods: {
-        onRefresh() {
-            this.page = 0
-            this.refreshing = true
-            this.loading = false
-            this.finished = false
-            this.getData().then(_ => {
-                this.refreshing = false
-            })
-        },
-        onLoad() {
-            this.refreshing = false
-            this.loading = true
-            this.finished = false
-            this.getData().then(_ => {
-                this.refreshing = false
-            })
-        },
-        tabClick(name, title) {
-            this.page = 0
-            this.list = []
-            this.loading = false
-            this.isLoading = false
-            this.finished = false
-        },
-        getData() {
-            var data = {
-                page: this.page,
-                size: 20
-            }
-            if (this.status[this.chooseTab]) {
-                data.query = {
-                    status: this.status[this.chooseTab],
-                    userId: this.user.id
-                }
-            } else {
-                data.query = {
-                    userId: this.user.id
-                }
-            }
-            return this.$http
-                .post('/withdrawApply/all', data)
-                .then(res => {
-                    if (res.first) {
-                        this.list = []
-                    }
-                    this.list = this.list.concat(res.content)
-                    this.loading = false
-                    if (res.last) {
-                        this.finished = true
-                    } else {
-                        this.page++
-                    }
-                })
-                .catch(e => {})
-        }
-    },
-    components: {
-        record
-    }
-}
-</script>
-<style lang="less" scoped>
-.list {
-    background-color: #f2f4f5;
-}
-.top {
-    position: sticky;
-    top: 0;
-    z-index: 20;
-}
-.content {
-    min-height: 100vh;
-    position: relative;
-}
-.tab-title {
-    display: flex;
-    align-items: center;
-    justify-content: center;
-
-    img {
-        width: 24px;
-        height: 24px;
-    }
-
-    .img-list {
-        display: flex;
-        flex-direction: column;
-        align-items: center;
-        justify-content: center;
-        margin-left: 4px;
-
-        img {
-            width: 8px;
-            height: 5px;
-
-            &:last-child {
-                margin-top: 2px;
-            }
-        }
-    }
-}
-.order-list {
-    padding: 15px 14px;
-
-    .order-info {
-        margin-bottom: 15px;
-    }
-}
-</style>

+ 0 - 52
src/views/CommissionRecordList.vue

@@ -1,52 +0,0 @@
-<template>
-    <div class="list">
-        <record-order
-            v-for="(item, index) in list"
-            :key="index"
-            :info="item"
-            :status="status"
-            :auditAmount="auditAmount"
-            :amount="amount"
-        ></record-order>
-        <!-- <record-order></record-order> -->
-    </div>
-</template>
-<script>
-import { mapState } from 'pinia'
-import { useUserStore } from '@/stores/user'
-import recordOrder from '@/components/RecordOrder.vue'
-export default {
-    name: 'commissionRecordListPage',
-    data() {
-        return {
-            list: [],
-            status: '',
-            amount: 0,
-            auditAmount: 0
-        }
-    },
-    computed: {
-        ...mapState(useUserStore, ['user'])
-    },
-    mounted() {
-        this.$http.post('/withdrawApply/detail/' + this.$route.query.id).then(res => {
-            this.list = res.commissionOrders
-            this.status = res.status
-            if (res.amount) {
-                this.amount = res.amount
-            }
-            if (res.auditAmount) {
-                this.auditAmount = res.auditAmount
-            }
-        })
-    },
-    components: {
-        recordOrder
-    }
-}
-</script>
-<style lang="less" scoped>
-.list {
-    padding: 15px;
-}
-</style>

+ 102 - 0
src/views/EditBankPage.vue

@@ -0,0 +1,102 @@
+<template>
+    <ion-page>
+        <ion-header>
+            <ion-toolbar>
+                <ion-buttons slot="start">
+                    <ion-back-button text="" default-href="#" @click="$router.back()"></ion-back-button>
+                </ion-buttons>
+                <ion-title>{{ $t('mine.bankCard') }}</ion-title>
+            </ion-toolbar>
+        </ion-header>
+        <ion-content>
+            <div class="input-sec">
+                <div class="title">{{ $t('bank.bank') }}</div>
+                <div class="input-wrapper">
+                    <div class="placeholder">{{ $t('bank.selectBank') }}</div>
+                    <ion-icon :icon="chevronForwardOutline"></ion-icon>
+                </div>
+            </div>
+
+            <div class="input-sec">
+                <div class="title">{{ $t('bank.cardNumber') }}</div>
+                <div class="input-wrapper">
+                    <ion-input
+                        typeof="number"
+                        :placeholder="$t('bank.cardNumber')"
+                        clear-input
+                        type="number"
+                        inputmode="decimal"
+                    ></ion-input>
+                </div>
+            </div>
+
+            <div class="input-sec">
+                <div class="title">{{ $t('bank.cardName') }}</div>
+                <div class="input-wrapper">
+                    <ion-input :placeholder="$t('bank.cardName')" clear-input></ion-input>
+                </div>
+            </div>
+
+            <div class="input-sec">
+                <div class="title">{{ $t('bank.phone') }}</div>
+                <div class="input-wrapper">
+                    <ion-input
+                        typeof="number"
+                        :placeholder="$t('bank.phone')"
+                        clear-input
+                        type="number"
+                        inputmode="decimal"
+                    ></ion-input>
+                </div>
+            </div>
+
+            <div class="input-sec">
+                <div class="title">{{ $t('bank.mail') }}</div>
+                <div class="input-wrapper">
+                    <ion-input :placeholder="$t('bank.mail')" clear-input></ion-input>
+                </div>
+            </div>
+            <div style="padding: 28px">
+                <van-button type="primary" block>{{ $t('bank.saveBankCard') }}</van-button>
+            </div>
+        </ion-content>
+    </ion-page>
+</template>
+<script>
+import { chevronForwardOutline } from 'ionicons/icons'
+export default {
+    setup() {
+        return {
+            chevronForwardOutline
+        }
+    },
+    data() {
+        return {}
+    }
+}
+</script>
+<style lang="less" scoped>
+.input-sec {
+    margin: 20px 28px 0 28px;
+    .title {
+        color: rgba(255, 255, 255, 0.8);
+        margin-bottom: 8px;
+        font-size: 12px;
+    }
+    .input-wrapper {
+        background-color: var(--ion-color-step-50);
+        height: 48px;
+        border-radius: 8px;
+        .f();
+        padding: 0 16px;
+        margin-top: 8px;
+        .placeholder {
+            opacity: 0.5;
+            flex: 1;
+        }
+        .input {
+            flex: 1;
+        }
+    }
+}
+</style>

+ 7 - 1
src/views/MinePage.vue

@@ -146,7 +146,13 @@
                     <template #right-icon> <ion-icon class="right-icon" :icon="intoIcon"></ion-icon> </template>
                 </van-cell>
 
-                <van-cell :title="$t('mine.bankCard')" :value="$t('mine.noBind')" is-link @click="wait" :border="false">
+                <van-cell
+                    :title="$t('mine.bankCard')"
+                    :value="$t('mine.noBind')"
+                    is-link
+                    :to="{ name: 'userBank' }"
+                    :border="false"
+                >
                     <template #icon>
                         <img class="menu-icon" src="../assets/info_icon_ka.png" alt="" />
                     </template>

+ 59 - 0
src/views/UserBankPage.vue

@@ -0,0 +1,59 @@
+<template>
+    <ion-page>
+        <ion-header>
+            <ion-toolbar>
+                <ion-buttons slot="start">
+                    <ion-back-button text="" default-href="#" @click="$router.back()"></ion-back-button>
+                </ion-buttons>
+                <ion-title>{{ $t('mine.bankCard') }}</ion-title>
+            </ion-toolbar>
+        </ion-header>
+        <ion-content>
+            <div class="btn-add" @click="$router.push({ name: 'editBank' })">
+                <div class="icon-box">
+                    <ion-icon :icon="addOutline"></ion-icon>
+                </div>
+                {{ $t('bank.addBankCard') }}
+            </div>
+        </ion-content>
+    </ion-page>
+</template>
+<script>
+import { addOutline } from 'ionicons/icons'
+import { IonIcon } from '@ionic/vue'
+export default {
+    setup() {
+        return {
+            addOutline,
+            IonIcon
+        }
+    },
+    data() {
+        return {}
+    }
+}
+</script>
+<style lang="less" scoped>
+.btn-add {
+    .f();
+    height: 56px;
+    background: var(--ion-color-step-50);
+    border-radius: 8px;
+    color: rgba(255, 255, 255, 0.6);
+    justify-content: center;
+    margin: 16px;
+    &:active {
+        background: var(--ion-color-step-100);
+    }
+    .icon-box {
+        width: 24px;
+        height: 24px;
+        border-radius: 12px;
+        background: var(--ion-color-step-200);
+        .f();
+        justify-content: center;
+        color: rgba(255, 255, 255, 0.6);
+        margin-right: 10px;
+    }
+}
+</style>

+ 27 - 1
src/views/WebViewPage.vue

@@ -1,9 +1,26 @@
 <template>
-    <div></div>
+    <ion-page>
+        <ion-header>
+            <ion-toolbar>
+                <ion-buttons slot="start">
+                    <ion-back-button text="" default-href="#" @click="$router.back()"></ion-back-button>
+                </ion-buttons>
+                <ion-title> </ion-title>
+            </ion-toolbar>
+        </ion-header>
+        <ion-content>
+            <UseElementBounding class="iframe-wrapper" v-slot="{ width, height }">
+                <iframe src="https://www.baidu.com" :width="width" :height="height"></iframe>
+            </UseElementBounding>
+        </ion-content>
+    </ion-page>
 </template>
 <script>
+import {} from '@vueuse/core'
+import { UseElementBounding } from '@vueuse/components'
 export default {
     name: 'WebPage',
+    components: { UseElementBounding },
     data() {
         return {
             url: 'https://www.google.com'
@@ -11,3 +28,12 @@ export default {
     }
 }
 </script>
+<style lang="less" scoped>
+.iframe-wrapper {
+    height: 100%;
+    overflow: hidden;
+}
+iframe {
+    border: none;
+}
+</style>

+ 31 - 0
yarn.lock

@@ -597,6 +597,25 @@
   resolved "https://registry.npmmirror.com/@vue/shared/-/shared-3.2.45.tgz#a3fffa7489eafff38d984e23d0236e230c818bc2"
   integrity sha512-Ewzq5Yhimg7pSztDV+RH1UDKBzmtqieXQlpTVm2AwraoRL/Rks96mvd8Vgi7Lj+h+TH8dv7mXD3FRZR3TUvbSg==
 
+"@vueuse/components@^9.10.0":
+  version "9.10.0"
+  resolved "https://registry.npmmirror.com/@vueuse/components/-/components-9.10.0.tgz#5c9686048119227d1cd59549e4a543dabfe860a0"
+  integrity sha512-BED5DcKFucS6iB8aUqjpPWbmnl2S2x7C2HkBjTd7bVN5ER+fCFBiHYsDTOjR5yOt2OI/VgfQQPEUnygh0nnxrg==
+  dependencies:
+    "@vueuse/core" "9.10.0"
+    "@vueuse/shared" "9.10.0"
+    vue-demi "*"
+
+"@vueuse/core@9.10.0":
+  version "9.10.0"
+  resolved "https://registry.npmmirror.com/@vueuse/core/-/core-9.10.0.tgz#2ef6e55ca773c5b2db1e3f13b8292af96dd32214"
+  integrity sha512-CxMewME07qeuzuT/AOIQGv0EhhDoojniqU6pC3F8m5VC76L47UT18DcX88kWlP3I7d3qMJ4u/PD8iSRsy3bmNA==
+  dependencies:
+    "@types/web-bluetooth" "^0.0.16"
+    "@vueuse/metadata" "9.10.0"
+    "@vueuse/shared" "9.10.0"
+    vue-demi "*"
+
 "@vueuse/core@^9.6.0":
   version "9.9.0"
   resolved "https://registry.npmmirror.com/@vueuse/core/-/core-9.9.0.tgz#ad6849cd03ba7ee396ef93fa01d4f2e5b11a4942"
@@ -607,11 +626,23 @@
     "@vueuse/shared" "9.9.0"
     vue-demi "*"
 
+"@vueuse/metadata@9.10.0":
+  version "9.10.0"
+  resolved "https://registry.npmmirror.com/@vueuse/metadata/-/metadata-9.10.0.tgz#1a5eb94ca755bd8e666505f47da7d88969cffdc7"
+  integrity sha512-G5VZhgTCapzU9rv0Iq2HBrVOSGzOKb+OE668NxhXNcTjUjwYxULkEhAw70FtRLMZc+hxcFAzDZlKYA0xcwNMuw==
+
 "@vueuse/metadata@9.9.0":
   version "9.9.0"
   resolved "https://registry.npmmirror.com/@vueuse/metadata/-/metadata-9.9.0.tgz#d3f3f40dcedb6a045e7940a1fba78828a70d9b7e"
   integrity sha512-pgxsUJv/d7IjKpLeB6TthggEsaBwM3ffc5jPrr5TmxAm/fup0mGR5VTzrdA/PSx85tpb+CIvP92D+55qBNc8ag==
 
+"@vueuse/shared@9.10.0":
+  version "9.10.0"
+  resolved "https://registry.npmmirror.com/@vueuse/shared/-/shared-9.10.0.tgz#49874a0f9955d28689b3133de660367c63dbc030"
+  integrity sha512-vakHJ2ZRklAzqmcVBL38RS7BxdBA4+5poG9NsSyqJxrt9kz0zX3P5CXMy0Hm6LFbZXUgvKdqAS3pUH1zX/5qTQ==
+  dependencies:
+    vue-demi "*"
+
 "@vueuse/shared@9.9.0":
   version "9.9.0"
   resolved "https://registry.npmmirror.com/@vueuse/shared/-/shared-9.9.0.tgz#3f02e6a86d9c789c3dd73308bd3adea958860086"