فهرست منبع

feat: 钱包冻结金额功能

liangan 3 هفته پیش
والد
کامیت
537a67deb9
8فایلهای تغییر یافته به همراه140 افزوده شده و 19 حذف شده
  1. 9 0
      pages.config.ts
  2. 7 0
      src/api/wallet.ts
  3. 7 3
      src/locale/bn.json
  4. 7 3
      src/locale/en.json
  5. 7 3
      src/locale/zh-Hans.json
  6. 9 0
      src/pages.json
  7. 67 0
      src/pages/wallet/frozenRecord.vue
  8. 27 10
      src/pages/wallet/myWallet.vue

+ 9 - 0
pages.config.ts

@@ -268,6 +268,15 @@ export default defineUniPages({
         navigationBarBackgroundColor: '#FFFFFF',
       },
     },
+    {
+      path: 'pages/wallet/frozenRecord',
+      type: 'page',
+      layout: 'default',
+      style: {
+        navigationBarTitleText: '%wallet.frozenRecord.title%',
+        navigationBarBackgroundColor: '#fff',
+      },
+    },
     {
       path: 'pages/wallet/myWallet',
       type: 'page',

+ 7 - 0
src/api/wallet.ts

@@ -44,6 +44,13 @@ export function withdrawAdd(data: any) {
 export function withdrawRecordList(data: any) {
   return http.post<any>(`${pre}/api/withdraw/record/list`, data)
 }
+/**
+ * 冻结记录
+ * @returns
+ */
+export function withdrawFreedList(data: any) {
+  return http.get<any>(`${pre}/account/api/getFreeds`, data)
+}
 /**
  * 充值选项组
  * @returns

+ 7 - 3
src/locale/bn.json

@@ -151,7 +151,7 @@
   "mine.pages.myFavorite.title": "আমার পছন্দ",
   "mine.pages.myFavorite.empty": "এখনও পছন্দ নেই",
   "wallet.withdraw.title": "উত্তোলন",
-  "wallet.withdraw.balance": "ওয়ালেট ব্যালেন্স",
+  "wallet.withdraw.balance": "ওয়ালেট উপলব্ধ পরিমাণ",
   "wallet.withdraw.info": "উত্তোলনের তথ্য",
   "wallet.withdraw.form.bankName": "ব্যাংকের নাম",
   "wallet.withdraw.form.bankAccountName": "ব্যাংক অ্যাকাউন্ট নাম",
@@ -251,8 +251,9 @@
   "common.view": "দেখুন",
   "common.more": "আরও",
   "wallet.myWallet.title": "আমার ওয়ালেট",
-  "wallet.balance": "ওয়ালেট অ্যাকাউন্ট ব্যালেন্স",
-  "wallet.frozenBalance": "ওয়ালেট হিমায়িত ব্যালেন্স",
+  "wallet.balance": "ওয়ালেট ভারসাম্য",
+  "wallet.frozenBalance": "হিমায়িত ভারসাম্য",
+  "wallet.availableAmount": "উপলব্ধ পরিমাণ",
   "wallet.recharge": "রিচার্জ",
   "wallet.withdrawNow": "এখনই উত্তোলন করুন",
   "wallet.record": "ওয়ালেট রেকর্ড",
@@ -262,6 +263,9 @@
   "wallet.filter.commission": "কমিশন",
   "wallet.rechargeRecord.title": "রিচার্জ রেকর্ড",
   "wallet.withdrawRecord.title": "উত্তোলন রেকর্ড",
+  "wallet.frozenRecord.title": "হিমায়িত পরিমাণ রেকর্ড",
+  "wallet.frozenRecord.type.withdraw": "উত্তোলন হিমায়িত",
+  "wallet.frozenRecord.type.refund": "ফেরত হিমায়িত",
   "missionCenter.title": "মিশন সেন্টার",
   "referEarn.title": "রেফার এবং আয়",
   "vipMembership.title": "ভিআইপি সদস্যতা",

+ 7 - 3
src/locale/en.json

@@ -140,7 +140,7 @@
   "income.mtdEarnings": "MTD Earnings",
   "income.myGroupData": "My Group Data",
   "wallet.withdraw.title": "Withdraw",
-  "wallet.withdraw.balance": "Wallet Balance",
+  "wallet.withdraw.balance": "Wallet Available Amount",
   "wallet.withdraw.info": "Withdrawal information",
   "wallet.withdraw.form.bankName": "Bank Name",
   "wallet.withdraw.form.bankAccountName": "Bank Account Name",
@@ -251,8 +251,9 @@
   "common.view": "View",
   "common.more": "More",
   "wallet.myWallet.title": "My Wallet",
-  "wallet.balance": "Wallet Account Balance",
-  "wallet.frozenBalance": "Wallet Frozen Balance",
+  "wallet.balance": "Wallet Balance",
+  "wallet.frozenBalance": "Frozen Balance",
+  "wallet.availableAmount": "Available Amount",
   "wallet.recharge": "Recharge",
   "wallet.withdrawNow": "Withdraw Now",
   "wallet.record": "Wallet Record",
@@ -262,6 +263,9 @@
   "wallet.filter.commission": "Commission",
   "wallet.rechargeRecord.title": "Recharge Record",
   "wallet.withdrawRecord.title": "Withdraw Record",
+  "wallet.frozenRecord.title": "Frozen Amount Record",
+  "wallet.frozenRecord.type.withdraw": "Withdraw Frozen",
+  "wallet.frozenRecord.type.refund": "Refund Frozen",
   "missionCenter.title": "Mission Center",
   "referEarn.title": "Refer & Earn",
   "vipMembership.title": "VIP Membership",

+ 7 - 3
src/locale/zh-Hans.json

@@ -151,7 +151,7 @@
   "mine.pages.myFavorite.title": "我的收藏",
   "mine.pages.myFavorite.empty": "暂无收藏",
   "wallet.withdraw.title": "提现",
-  "wallet.withdraw.balance": "钱包额",
+  "wallet.withdraw.balance": "钱包可用金额",
   "wallet.withdraw.info": "提现信息",
   "wallet.withdraw.form.bankName": "银行名称",
   "wallet.withdraw.form.bankAccountName": "开户名",
@@ -251,8 +251,9 @@
   "common.view": "查看",
   "common.more": "更多",
   "wallet.myWallet.title": "我的钱包",
-  "wallet.balance": "钱包账户余额",
-  "wallet.frozenBalance": "钱包冻结余额",
+  "wallet.balance": "钱包余额",
+  "wallet.frozenBalance": "冻结余额",
+  "wallet.availableAmount": "可用金额",
   "wallet.recharge": "充值",
   "wallet.withdrawNow": "立即提现",
   "wallet.record": "钱包记录",
@@ -262,6 +263,9 @@
   "wallet.filter.commission": "佣金",
   "wallet.rechargeRecord.title": "充值记录",
   "wallet.withdrawRecord.title": "提现记录",
+  "wallet.frozenRecord.title": "冻结金额记录",
+  "wallet.frozenRecord.type.withdraw": "提现冻结",
+  "wallet.frozenRecord.type.refund": "退款冻结",
   "missionCenter.title": "任务中心",
   "referEarn.title": "推荐赚钱",
   "vipMembership.title": "VIP会员",

+ 9 - 0
src/pages.json

@@ -255,6 +255,15 @@
         "navigationBarBackgroundColor": "#FFFFFF"
       }
     },
+    {
+      "path": "pages/wallet/frozenRecord",
+      "type": "page",
+      "layout": "default",
+      "style": {
+        "navigationBarTitleText": "%wallet.frozenRecord.title%",
+        "navigationBarBackgroundColor": "#fff"
+      }
+    },
     {
       "path": "pages/wallet/myWallet",
       "type": "page",

+ 67 - 0
src/pages/wallet/frozenRecord.vue

@@ -0,0 +1,67 @@
+<route lang="json5" type="page">
+{
+  layout: 'default',
+  style: {
+    navigationBarTitleText: '%wallet.frozenRecord.title%',
+    navigationBarBackgroundColor: '#fff',
+  },
+}
+</route>
+
+<script lang="ts" setup>
+// 必须导入需要用到的页面生命周期(即使在当前页面上没有直接使用到)
+// eslint-disable-next-line unused-imports/no-unused-imports
+import { onPageScroll, onReachBottom } from '@dcloudio/uni-app'
+import useZPaging from 'z-paging/components/z-paging/js/hooks/useZPaging.js'
+import { withdrawFreedList } from '@/api/wallet'
+import { formatNumber } from '@/utils'
+
+defineOptions({
+  name: 'FrozenRecord', // 冻结记录
+})
+// z-paging
+const paging = ref(null)
+// 类似mixins,如果是页面滚动务必要写这一行,并传入当前ref绑定的paging,注意此处是paging,而非paging.value
+useZPaging(paging)
+const queryParams = ref<any>({})
+// 搜索结果
+const dataList = ref([])
+
+async function queryList(pageNo: number, pageSize: number) {
+  try {
+    const res = await withdrawFreedList({
+      page: pageNo,
+      size: pageSize,
+    })
+    console.log(res)
+    paging.value.complete(res.data.list)
+  }
+  catch {
+    paging.value.complete(false)
+  }
+}
+onLoad((options) => {
+  queryParams.value = options
+})
+</script>
+
+<template>
+  <z-paging ref="paging" v-model="dataList" use-page-scroll @query="queryList">
+    <view class="py-20rpx">
+      <view v-for="item in dataList" :key="item.id" class="bg-white px-22rpx py-18rpx">
+        <view class="mb-8rpx flex items-center justify-between">
+          <view>{{ $t('myOrders.order.id') }}: {{ item.id }}</view>
+          <view>{{ formatNumber(item.freezeAmount) }}</view>
+        </view>
+        <view class="flex items-center justify-between text-22rpx text-#3A444C">
+          <view>{{ item.createTime }}</view>
+          <wd-text type="primary" bold :text="item.status === 1 ? $t('wallet.frozenRecord.type.withdraw') : $t('wallet.frozenRecord.type.refund')" />
+        </view>
+      </view>
+    </view>
+  </z-paging>
+</template>
+
+<style lang="scss" scoped>
+//
+</style>

+ 27 - 10
src/pages/wallet/myWallet.vue

@@ -115,14 +115,31 @@ onShow(() => {
           <view class="mb-22rpx text-44rpx text-[var(--wot-color-theme)] font-bold">
             {{ formatNumber(walletInfo.balance) }}
           </view>
-          <view class="flex items-center text-22rpx text-#595959">
-            <text class="mr-1px">
-              {{ $t('wallet.frozenBalance') }}
-            </text>
-            <wd-icon name="help-circle" size="20rpx" />
-          </view>
-          <view class="text-26rpx font-bold">
-            {{ formatNumber(walletInfo.freezeAmount) }}
+          <view class="flex items-center justify-between gap-4">
+            <view @click="toPage({ url: '/pages/wallet/frozenRecord' })">
+              <view class="flex items-center text-22rpx text-#595959">
+                <text class="mr-1">
+                  {{ $t('wallet.frozenBalance') }}
+                </text>
+                <wd-icon name="help-circle" size="20rpx" />
+              </view>
+              <view class="flex items-center justify-center text-26rpx font-bold">
+                <text class="mr-1">
+                  {{ formatNumber(walletInfo.freezeAmount) }}
+                </text>
+                <wd-icon name="arrow-right" size="20rpx" />
+              </view>
+            </view>
+            <view>
+              <view class="flex items-center text-22rpx text-#595959">
+                <text>
+                  {{ $t('wallet.availableAmount') }}
+                </text>
+              </view>
+              <view class="text-26rpx font-bold">
+                {{ formatNumber(walletInfo.availableAmount) }}
+              </view>
+            </view>
           </view>
         </view>
         <view class="flex flex-col items-end">
@@ -132,7 +149,7 @@ onShow(() => {
         </view>
       </view>
       <view class="mb-20rpx flex justify-center">
-        <view class="flex items-center justify-center" @click="toPage({ url: '/pages/wallet/withdraw', params: { balance: walletInfo.balance, type: 1 } })">
+        <view class="flex items-center justify-center" @click="toPage({ url: '/pages/wallet/withdraw', params: { balance: walletInfo.availableAmount, type: 1 } })">
           <text class="mr-8rpx">
             {{ $t('wallet.withdrawNow') }}
           </text>
@@ -169,7 +186,7 @@ onShow(() => {
           >
             <view class="mb-8rpx flex items-center justify-between text-24rpx">
               <text class="truncate">
-                Order ID:{{ item.bizNo }}
+                {{ $t('myOrders.order.id') }}:{{ item.bizNo }}
               </text>
               <text class="flex-shrink-0 pl-16rpx">
                 {{ item.type === 1 ? '-' : '+' }}৳{{ formatNumber(item.amount) }}