zhb 1 tháng trước cách đây
mục cha
commit
3bacb6ef17
4 tập tin đã thay đổi với 253 bổ sung10 xóa
  1. 3 6
      components/cwg-notice.vue
  2. 249 0
      components/cwg-payment.vue
  3. 0 4
      pages/customer/deposit.vue
  4. 1 0
      windows/top-window.vue

+ 3 - 6
components/cwg-notice.vue

@@ -80,7 +80,7 @@ const getData = async () => {
         read: 0
     })
     if (res.data && res.code == 200) {
-        isRed.value = true
+        isRed.value = res.data > 0
     } else {
         isRed.value = false
     }
@@ -115,7 +115,8 @@ onMounted(() => {
     .pc-header-btn {
         position: relative;
 
-        &::after {
+
+        &.has-dot::after {
             content: '';
             position: absolute;
             top: px2rpx(4);
@@ -125,10 +126,6 @@ onMounted(() => {
             background-color: #f56c6c;
             border-radius: 50%;
         }
-
-        &.has-dot::after {
-            display: block;
-        }
     }
 
     .right-drawer {

+ 249 - 0
components/cwg-payment.vue

@@ -0,0 +1,249 @@
+<template>
+    <view class="notice-container">
+        <cwg-dropdown ref="dropdownRef" :menu-list="customMenuList" @menuClick="handleMenuClick">
+            <view class="pc-header-btn">
+                <cwg-icon name="crm-payment" color="#141d22" @click="openNotice" />
+                {{ formattedBalance }} USD
+            </view>
+            <template #btn>
+                <view class="right-drawer">
+
+                    <view class="drawer-item">
+                        <view class="drawer-item-title">钱包余额</view>
+                        <view class="drawer-item-content">{{ formattedBalance }} USD</view>
+                    </view>
+                    <view class="drawer-item">
+                        <view class="drawer-item-title">处理中出金金额</view>
+                        <view class="drawer-item-content">{{ formattedPendingWithdrawAmount }} USD</view>
+                    </view>
+
+                </view>
+            </template>
+        </cwg-dropdown>
+    </view>
+</template>
+
+<script setup lang="ts">
+import { computed, ref, onMounted } from 'vue'
+import { newsApi } from '@/service/news'
+import useRouter from "@/hooks/useRouter";
+import { drawApi } from "@/service/draw";
+import { useI18n } from 'vue-i18n'
+const { t, locale } = useI18n()
+import { userToken } from "@/composables/config";
+const isRed = ref(false)
+const dropdownRef = ref(null)
+const close = () => {
+    dropdownRef.value.close()
+}
+const router = useRouter();
+const customMenuList = computed(() =>
+    [{
+        label: t('wallet.item6'),
+        type: 1
+    },
+    {
+        label: t('wallet.item7'),
+        type: 2
+    },
+    ])
+
+const handleMenuClick = ({ value }) => {
+    goPages(value)
+}
+const NumberDecimal = (value) => {
+    let realVal = ''
+    if (!isNaN(value) && value !== '') {
+        // 截取当前数据到小数点后两位
+        realVal = parseFloat(value).toFixed(2)
+    } else {
+        realVal = '0'
+    }
+    return realVal
+};
+const NumberDesensitization = (value) => {
+    let realVal = ''
+    if (!isNaN(value) && value !== '') {
+        value = value.toString();
+        realVal = value.substr(0, 2) + '****' + value.substr(-2);
+    } else {
+        realVal = '--'
+    }
+    return realVal
+};
+const isShow = ref(true)
+const walletbalance = ref(0)
+const pendingWithdrawAmount = ref(0)
+const formattedBalance = computed(() => {
+    const value = walletbalance.value || "0"
+    const decimalValue = NumberDecimal(value)
+    return isShow.value ? decimalValue : NumberDesensitization(decimalValue)
+})
+const formattedPendingWithdrawAmount = computed(() => {
+    const value = pendingWithdrawAmount.value || "0"
+    const decimalValue = NumberDecimal(value)
+    return isShow.value ? decimalValue : NumberDesensitization(decimalValue)
+})
+const getWalletList = async () => {
+    let res = await drawApi.walletbalance({});
+    if (res.code == 200) {
+        if (res.data != null) {
+            walletbalance.value = res.data;
+        }
+    } else {
+
+        uni.showToast({
+            title: res.msg,
+            icon: 'none'
+        });
+    }
+}
+
+//获取处理中出金金额
+const getPendingWithdrawAmount = async () => {
+    let res = await drawApi.pendingWithdrawAmount({});
+    if (res.code == 200) {
+        if (res.data != null) {
+            pendingWithdrawAmount.value = res.data;
+        }
+    } else {
+        uni.showToast({
+            title: res.msg,
+            icon: 'none'
+        });
+    }
+}
+const goPages = (type) => {
+    let path
+    if (type == 1) {
+        path = '/pages/customer/wallet-transfer'
+    } else if (type == 2) {
+        path = '/pages/customer/wallet-history'
+    }
+    router.push(path)
+    close()
+}
+const goMore = () => {
+    router.push({
+        path: '/pages/common/notice'
+    })
+    close()
+}
+onMounted(() => {
+    if (!userToken.value) return
+    getWalletList()
+    getPendingWithdrawAmount()
+})
+</script>
+
+<style scoped lang="scss">
+@import "@/uni.scss";
+
+.notice-container {
+    :deep(.cwg-dropdown-menu-container) {
+        left: px2rpx(-280) !important;
+        right: px2rpx(0) !important;
+    }
+
+    @media screen and (max-width: 991px) {
+        :deep(.cwg-dropdown-menu-container) {
+            left: px2rpx(-270) !important;
+            max-width: px2rpx(400);
+        }
+    }
+
+    .pc-header-btn {
+        position: relative;
+        width: fit-content;
+        display: flex;
+        align-items: center;
+        justify-content: center;
+        padding: 0 px2rpx(12);
+
+
+
+        &.has-dot::after {
+            content: '';
+            position: absolute;
+            top: px2rpx(4);
+            right: px2rpx(4);
+            width: px2rpx(8);
+            height: px2rpx(8);
+            background-color: #f56c6c;
+            border-radius: 50%;
+        }
+    }
+
+    .right-drawer {
+        width: px2rpx(300);
+        background-color: var(--color-white);
+        display: flex;
+        flex-direction: column;
+        padding: 20px 16px;
+        box-sizing: border-box;
+    }
+
+    .notification-list {
+        width: 100%;
+    }
+
+    .notification-item {
+        display: flex;
+        align-items: center;
+        justify-content: space-between;
+        padding: px2rpx(12) px2rpx(16);
+        border-bottom: 1px solid #f0f0f0;
+        cursor: pointer;
+        transition: all 0.3s;
+
+        &:hover {
+            background-color: rgba(0, 0, 0, 0.05);
+        }
+
+        .item-content {
+            flex: 1;
+
+            .item-title {
+                font-size: px2rpx(14);
+                color: #333;
+                line-height: 1.4;
+                margin-bottom: px2rpx(4);
+            }
+
+            .item-time {
+                font-size: px2rpx(12);
+                color: #999;
+            }
+        }
+
+        .item-badge {
+            margin-left: px2rpx(12);
+
+            .dot {
+                width: px2rpx(8);
+                height: px2rpx(8);
+                background-color: #f56c6c;
+                border-radius: 50%;
+            }
+        }
+    }
+
+    .logout-wrap {
+        margin-top: auto;
+        padding: 20px 16px;
+        margin-bottom: 20px;
+    }
+
+    .logout-btn {
+        height: 44px;
+        background: #f4eadf;
+        display: flex;
+        align-items: center;
+        justify-content: center;
+        gap: 8px;
+        color: #ff9800;
+        font-weight: 600;
+        cursor: pointer;
+    }
+}
+</style>

+ 0 - 4
pages/customer/deposit.vue

@@ -1471,7 +1471,6 @@ const closeDia = () => {
     dialogVisible.value = false
     dialogCheckOK.value = false
     showTable()
-    loginValue.value = ""
 }
 const isStep3Open = () => {
     isStep3.value = true
@@ -1894,9 +1893,6 @@ onMounted(() => {
         isNewYear24Open()
         ActivityRequiteInfo()
     }, 800);
-
-
-
 })
 onUnmounted(() => {
     userStore.savePaymentChannel('')

+ 1 - 0
windows/top-window.vue

@@ -4,6 +4,7 @@
 			<image class="left-img" src="/static/images/logo.png" mode="widthFix" alt="logo" @click="openLeftDrawer" />
 		</div>
 		<div class="right">
+			<cwg-payment />
 			<cwg-system />
 			<cwg-language />
 			<cwg-notice />