liangan пре 3 недеља
родитељ
комит
d9ebfbae0d

+ 2 - 2
src/components/product/product.vue

@@ -36,14 +36,14 @@ function handleClick() {
     :style="{ maxWidth: Number.isFinite(width) ? `${width}rpx` : width, width: Number.isFinite(width) ? `${width}rpx` : width }"
     @click="handleClick"
   >
-    <view class="mb-10rpx" :style="{ maxWidth: Number.isFinite(width) ? `${width}rpx` : width, width: Number.isFinite(width) ? `${width}rpx` : width, height: Number.isFinite(height) ? `${height}rpx` : height }">
+    <view :style="{ maxWidth: Number.isFinite(width) ? `${width}rpx` : width, width: Number.isFinite(width) ? `${width}rpx` : width, height: Number.isFinite(height) ? `${height}rpx` : height }">
       <image
         :src="item.image"
         class="h-full w-full"
         mode="aspectFit"
       />
     </view>
-    <view class="box-border w-full px-14rpx" :style="{ fontSize: Number.isFinite(titleFontSize) ? `${titleFontSize}rpx` : titleFontSize }">
+    <view class="box-border w-full bg-white px-14rpx pt-10rpx" :style="{ fontSize: Number.isFinite(titleFontSize) ? `${titleFontSize}rpx` : titleFontSize }">
       <view class="mb-3px truncate">
         {{ item.productName }}
       </view>

+ 3 - 3
src/locale/en.json

@@ -8,11 +8,11 @@
   "addressBook.operate.form.phone": "Phone Number",
   "addressBook.operate.form.phone.placeholder": "+88",
   "addressBook.operate.form.district": "Privince/District",
-  "addressBook.operate.form.district.placeholder": "Please choose",
+  "addressBook.operate.form.district.placeholder": "Please Choose",
   "addressBook.operate.form.street": "Floor/Unit No./Street",
-  "addressBook.operate.form.street.placeholder": "Detailed address",
+  "addressBook.operate.form.street.placeholder": "Detailed Address",
   "addressBook.operate.form.postcode": "Postcode",
-  "addressBook.operate.form.postcode.placeholder": "Your postcode",
+  "addressBook.operate.form.postcode.placeholder": "Your Postcode",
   "addressBook.operate.form.default": "Default",
   "addressBook.operate.button.save": "Save",
   "addressBook.operate.button.update": "Update",

+ 5 - 5
src/pages/index/index.vue

@@ -225,7 +225,7 @@ onShow(() => {
           {{ $t('home.news') }}
         </view>
         <scroll-view scroll-x>
-          <view class="flex items-center gap-16rpx pb-24rpx">
+          <view class="flex items-center gap-16rpx">
             <Product
               v-for="(item, index) in newProducts"
               :key="index"
@@ -237,7 +237,7 @@ onShow(() => {
         </scroll-view>
       </view>
       <view class="productList">
-        <wd-tabs v-model="priceTab" :line-width="0" :line-height="0" @change="onPriceTabChange">
+        <wd-tabs v-model="priceTab" slidable="always" :line-width="0" :line-height="0" @change="onPriceTabChange">
           <template v-for="item in priceTabList" :key="item">
             <wd-tab :title="$t(item.title)" />
           </template>
@@ -261,11 +261,11 @@ onShow(() => {
 :deep(.productList) {
   .wd-tabs {
     background: none;
+    .wd-tabs__nav-item {
+      padding-left: 0 !important;
+    }
     .wd-tabs__nav {
       background: none;
-      .wd-tabs__nav-item {
-        justify-content: flex-start;
-      }
     }
   }
 }

+ 2 - 2
src/pages/mine/addressBook.vue

@@ -152,7 +152,7 @@ onLoad((options) => {
                 </text>
                 <text>{{ item.phone }}</text>
               </view>
-              <wd-tag type="primary" plain>
+              <wd-tag v-if="item.isDefault === 1" type="primary" plain>
                 {{ t('addressBook.tag.default') }}
               </wd-tag>
             </view>
@@ -173,7 +173,7 @@ onLoad((options) => {
     </view>
     <template #bottom>
       <view class="bg-white/60 px-28rpx py-30rpx backdrop-blur-20">
-        <wd-button plain block @click="toPage('/pages/mine/addressBookOperate')">
+        <wd-button plain block @click="toPage('/pages/mine/addressBookOperate', { default: dataList.length === 0 ? '1' : '0' })">
           {{ $t('addressBook.button.add') }}
         </wd-button>
       </view>

+ 5 - 0
src/pages/mine/addressBookOperate.vue

@@ -245,6 +245,9 @@ onLoad(async (options: any) => {
 
     // 检查是否为编辑模式
     const params = getPageParams(options)
+    if (params.default && params.default === '1') {
+      model.value.isDefault = 1
+    }
     if (params.id) {
       isEditMode.value = true
       addressId.value = params.id
@@ -323,6 +326,8 @@ onLoad(async (options: any) => {
             v-model="model.postCode"
             :label="t('addressBook.operate.form.postcode')"
             label-width="240rpx"
+            type="number"
+            :maxlength="4"
             custom-label-class="pl-24rpx text-28rpx"
             clearable
             :placeholder="t('addressBook.operate.form.postcode.placeholder')"

+ 9 - 5
src/pages/mine/mine.vue

@@ -111,6 +111,10 @@ async function getWalletInfo() {
 onShow(() => {
   getWalletInfo()
 })
+onLoad(() => {
+  // 页面加载时的逻辑
+  userStore.getUserInfo()
+})
 </script>
 
 <template>
@@ -151,7 +155,7 @@ onShow(() => {
       <view class="flex items-center">
         <wd-img width="84rpx" height="84rpx" round src="/static/icons/wallet-balance.png" />
         <view class="ml-18rpx">
-          <view class="text-22rpx text-#595959">
+          <view class="mb-3px text-22rpx text-#595959">
             {{ $t('mine.wallet.balance') }}
           </view>
           <view class="text-44rpx text-[var(--wot-color-theme)] font-bold">
@@ -159,14 +163,14 @@ onShow(() => {
           </view>
         </view>
       </view>
-      <view class="flex flex-col items-end">
-        <wd-button size="small" @click.stop="toPage('/pages/wallet/recharge')">
+      <view class="flex flex-col items-end" @click.stop="toPage('/pages/wallet/recharge')">
+        <wd-button size="small">
           {{ $t('mine.wallet.recharge') }}
         </wd-button>
       </view>
     </view>
   </view>
-  <view class="mb-20rpx bg-white px-24rpx pb-32rpx pt-26rpx">
+  <view class="mb-24rpx bg-white px-24rpx pb-32rpx pt-26rpx">
     <view class="mb-24rpx flex items-center justify-between">
       <text class="text-32rpx">
         {{ $t('mine.group.title') }}
@@ -187,7 +191,7 @@ onShow(() => {
       </view>
     </view>
   </view>
-  <view class="grid grid-cols-3 gap-24rpx bg-white py-65rpx">
+  <view class="grid grid-cols-3 gap-48rpx bg-white py-65rpx">
     <view v-for="(item, index) in menuList" :key="index" class="flex flex-col items-center" @click="menuClick(item)">
       <wd-img width="48rpx" height="48rpx" :src="item.icon" />
       <view class="mt-24rpx text-22rpx text-#3A444C">

+ 5 - 1
src/pages/mine/myProfile.vue

@@ -99,6 +99,10 @@ async function updateAvatar() {
     uploading.value = false
   }
 }
+onLoad(() => {
+  // 页面加载时的逻辑
+  userStore.getUserInfo()
+})
 </script>
 
 <template>
@@ -116,7 +120,7 @@ async function updateAvatar() {
             <wd-icon name="arrow-right" custom-class="ml-10rpx" size="36rpx" />
           </view>
         </wd-cell>
-        <wd-cell :title="$t('myProfile.userId')" :value="userInfo.userId" />
+        <wd-cell :title="$t('myProfile.userId')" :value="userInfo.userNo" />
         <wd-cell :title="$t('myProfile.userName')" :value="userInfo.name" />
         <wd-cell :title="$t('myProfile.mobileNumber')" :value="userInfo.phoneNo" />
       </wd-cell-group>

+ 11 - 6
src/pages/mine/share.vue

@@ -11,18 +11,19 @@
 <script setup lang="ts">
 import tkiQrcode from 'tki-qrcode'
 import { t } from '@/locale'
+import { useUserStore } from '@/store'
 import { goBack } from '@/utils/page'
 
 // 获取屏幕边界到安全区域距离
 const systemInfo = uni.getSystemInfoSync()
 const safeAreaInsets = systemInfo.safeAreaInsets
 
+const userStore = useUserStore()
+
 // 推荐码
-const userInfo = computed(() => {
-  return getUserInfoHook()
-})
+const userInfo = computed(() => getUserInfoHook())
 const qrcodeConfig = ref<any>({
-  val: `http://124.222.152.234:8078?referrer=${userInfo.value.userNo}`, // 推荐链接
+  val: `http://124.222.152.234:8078?referrer=${userInfo.value.invitedCode}`, // 推荐链接
   size: 500,
   background: '#ffffff',
   foreground: '#000000',
@@ -60,7 +61,7 @@ const socialPlatforms = ref([
 // 复制推荐码
 function copyReferrerCode() {
   uni.setClipboardData({
-    data: userInfo.value.userNo,
+    data: userInfo.value.invitedCode,
     success: () => {
       uni.showToast({
         title: t('mine.pages.share.copySuccess'),
@@ -84,6 +85,10 @@ function handleShare(platform: string) {
     icon: 'none',
   })
 }
+onLoad(() => {
+  // 页面加载时的逻辑
+  userStore.getUserInfo()
+})
 </script>
 
 <template>
@@ -110,7 +115,7 @@ function handleShare(platform: string) {
       <!-- 推荐码显示 -->
       <view class="mb-44rpx flex items-center justify-center">
         <text class="mr-20rpx text-64rpx font-bold tracking-wider">
-          {{ userInfo.userNo }}
+          {{ userInfo.invitedCode }}
         </text>
         <wd-icon name="file-copy" size="30rpx" color="#757575" @click="copyReferrerCode" />
       </view>

+ 2 - 3
src/pages/missionCenter/missionCenter.vue

@@ -13,13 +13,11 @@
 import { ref } from 'vue'
 import { clockIn, todayDetail } from '@/api/mine'
 import { toPage } from '@/utils/page'
+import { toast } from '@/utils/toast'
 
 defineOptions({
   name: 'MissionCenter', // 任务中心
 })
-const userInfo = computed(() => {
-  return getUserInfoHook()
-})
 
 const dailyMission = [
   {
@@ -51,6 +49,7 @@ async function signIn() {
   const res = await clockIn()
   if (res.code === '200') {
     await getSignList()
+    toast.success('Check-in Success')
   }
 }
 const signList = ref<any[]>([])

+ 0 - 3
src/pages/myOrders/myOrders.vue

@@ -22,9 +22,6 @@ defineOptions({
   name: 'MyOrders', // 我的订单
 })
 
-const userInfo = computed(() => {
-  return getUserInfoHook()
-})
 // z-paging
 const paging = ref(null)
 // 类似mixins,如果是页面滚动务必要写这一行,并传入当前ref绑定的paging,注意此处是paging,而非paging.value

+ 2 - 2
src/pages/myOrders/orderDetail.vue

@@ -235,11 +235,11 @@ function showRechargeDialog() {
 function showPayOrderDialog() {
   dialogType.value = 'pay'
   Object.assign(dialogConfig.value, DialogUtils.info(
-    'BandhuBuy Wallet Pay',
+    'Payment',
     {
       showCancel: false,
       cancelText: '',
-      confirmText: 'DONE',
+      confirmText: 'Pay Now',
       confirmPlain: false,
     },
   ))

+ 5 - 5
src/pages/search/search.vue

@@ -115,19 +115,19 @@ onLoad(() => {
 <template>
   <z-paging ref="paging" v-model="dataList" use-page-scroll @query="queryList" @click="closeOutside">
     <template #top>
-      <view class="bg-white/40 text-center" :style="{ paddingTop: `${safeAreaInsets?.top}px` }">
-        <wd-navbar custom-class="bg-transparent!" :bordered="false">
+      <view class="bg-white" :style="{ paddingTop: `${safeAreaInsets?.top}px` }">
+        <wd-navbar :bordered="false">
           <template #title>
             <view class="content">
               <view class="back">
                 <wd-icon name="thin-arrow-left" size="32rpx" @click="() => goBack()" />
               </view>
-              <input v-model.trim="formData.storeName" class="search-input" confirm-type="search" input-mode="search" type="text" :placeholder="$t('search.placeholder')" @confirm="queryList(1, 20)">
+              <input v-model.trim="formData.storeName" class="search-input" type="text" :placeholder="$t('search.placeholder')" @confirm="queryList(1, 20)">
               <wd-icon name="search" custom-class="search-icon" color="#999" size="32rpx" />
             </view>
           </template>
         </wd-navbar>
-        <view class="flex backdrop-blur-20">
+        <view class="flex bg-white text-center">
           <wd-drop-menu class="flex-1">
             <wd-drop-menu-item v-model="formData.prices" :options="option1" @change="queryList(1, 20)" />
           </wd-drop-menu>
@@ -140,7 +140,7 @@ onLoad(() => {
         </view>
       </view>
     </template>
-    <view class="px-24rpx pb-24rpx">
+    <view class="mt-24rpx px-24rpx pb-24rpx">
       <view class="grid grid-cols-2 gap-22rpx">
         <Product v-for="(item, index) in dataList" :key="index" width="100%" :height="340" :item="item" />
       </view>

+ 17 - 11
src/pages/topChampions/topChampions.vue

@@ -44,7 +44,12 @@ function getRankNumber(index: number) {
 }
 
 // 搜索结果
-const dataList = ref([])
+const data = ref<any>({
+  users: {
+    list: [],
+  },
+  updateTime: '',
+})
 async function queryList(pageNo: number, pageSize: number) {
   try {
     const res = await redEnvelopeTop({
@@ -52,7 +57,8 @@ async function queryList(pageNo: number, pageSize: number) {
       page: pageNo,
       type: 1,
     })
-    paging.value.complete(res.data.list)
+    data.value = res.data
+    paging.value.complete(res.data.users.list)
   }
   catch {
     paging.value.complete(false)
@@ -61,7 +67,7 @@ async function queryList(pageNo: number, pageSize: number) {
 </script>
 
 <template>
-  <z-paging ref="paging" v-model="dataList" use-page-scroll @query="queryList">
+  <z-paging ref="paging" v-model="data.users.list" use-page-scroll @query="queryList">
     <template #top>
       <view
         class="relative from-[#FA2B19] to-[#FE6232] bg-gradient-to-br"
@@ -82,9 +88,9 @@ async function queryList(pageNo: number, pageSize: number) {
     </template>
     <view>
       <view class="py-22rpx text-center text-22rpx text-#5C5C5C">
-        2025.05.05 Update
+        {{ data.updateTime || '-' }} Update
       </view>
-      <view v-for="(item, index) in dataList" :key="index" class="relative mb-20rpx flex items-center justify-between bg-white p-24rpx">
+      <view v-for="(item, index) in data.users.list" :key="index" class="relative mb-20rpx flex items-center justify-between bg-white p-24rpx">
         <!-- 左上角TOP标签 -->
         <view
           class="absolute left-24rpx top-0 h-52rpx w-48rpx flex items-center justify-center rounded-4rpx text-20rpx text-white font-bold"
@@ -101,17 +107,17 @@ async function queryList(pageNo: number, pageSize: number) {
         </view>
         <view class="w-30% flex flex-col items-center justify-center text-center font-bold">
           <wd-img width="80rpx" height="80rpx" round :src="item.headPic" />
-          <view class="text-28rpx">
+          <view class="mb-3px text-28rpx">
             {{ item.name }}
           </view>
           <view class="text-24rpx">
             V{{ item.vipLevel }}
           </view>
         </view>
-        <wd-divider dashed custom-class="h-80rpx! mx-40rpx!" color="#A4A4A4" vertical />
+        <wd-divider custom-class="h-80rpx! mx-40rpx!" color="#A4A4A4" vertical dashed />
         <view class="grid grid-cols-2 flex-1 gap-24rpx">
           <view class="flex flex-col items-center">
-            <view class="text-22rpx text-#5B5B5B">
+            <view class="mb-3px text-22rpx text-#5B5B5B">
               {{ $t('topChampions.invitedFriends') }}
             </view>
             <view class="text-26rpx font-bold">
@@ -119,7 +125,7 @@ async function queryList(pageNo: number, pageSize: number) {
             </view>
           </view>
           <view class="flex flex-col items-center">
-            <view class="text-22rpx text-#5B5B5B">
+            <view class="mb-3px text-22rpx text-#5B5B5B">
               {{ $t('topChampions.l7dEarnings') }}
             </view>
             <view class="text-26rpx text-[var(--wot-color-theme)] font-bold">
@@ -127,7 +133,7 @@ async function queryList(pageNo: number, pageSize: number) {
             </view>
           </view>
           <view class="flex flex-col items-center">
-            <view class="text-22rpx text-#5B5B5B">
+            <view class="mb-3px text-22rpx text-#5B5B5B">
               {{ $t('topChampions.teamMembers') }}
             </view>
             <view class="text-26rpx font-bold">
@@ -135,7 +141,7 @@ async function queryList(pageNo: number, pageSize: number) {
             </view>
           </view>
           <view class="flex flex-col items-center">
-            <view class="text-22rpx text-#5B5B5B">
+            <view class="mb-3px text-22rpx text-#5B5B5B">
               {{ $t('topChampions.joinedGroups') }}
             </view>
             <view class="text-26rpx font-bold">

+ 3 - 3
src/pages/wallet/myWallet.vue

@@ -55,11 +55,11 @@ async function getWalletFlowList(pageNo: number, pageSize: number) {
 // 显示取消订单确认对话框
 function showUnpaidOrderDialog() {
   Object.assign(dialogConfig.value, DialogUtils.info(
-    `You have unfinished recharge orders,\nDo you want to continue recharge?`,
+    `You have unfinished top up orders,\nDo you want to continue?`,
     {
       showCancel: true,
-      confirmText: 'Continue Recharge',
-      cancelText: 'New Recharge',
+      confirmText: 'Cancel',
+      cancelText: 'View',
     },
   ))
 }

+ 4 - 4
src/pages/wallet/withdraw.vue

@@ -12,6 +12,7 @@
 import { getConfigByCode } from '@/api/common'
 import { withdrawAdd } from '@/api/wallet'
 import { t } from '@/locale'
+import { useUserStore } from '@/store'
 import { formatNumber } from '@/utils'
 import { getPageParams, goBack, toPage } from '@/utils/page'
 import { toast } from '@/utils/toast'
@@ -19,11 +20,9 @@ import { toast } from '@/utils/toast'
 defineOptions({
   name: 'Withdraw', // 提现
 })
-const userInfo = computed(() => {
-  console.log(getUserInfoHook().bank)
 
-  return getUserInfoHook()
-})
+const userStore = useUserStore()
+const userInfo = computed(() => getUserInfoHook())
 const queryParams = ref<any>({})
 // 表单数据
 const formData = ref({
@@ -62,6 +61,7 @@ async function submit() {
     const res = await withdrawAdd({ ...formData.value, accountType: queryParams.value.type, channel: formData.value.bank })
     console.log(res)
     if (res.code === '200') {
+      userStore.getUserInfo()
       toast.success(t('wallet.withdraw.success'))
       setTimeout(() => {
         goBack()