panhui 3 년 전
부모
커밋
1cd6697fb0
9개의 변경된 파일357개의 추가작업 그리고 40개의 파일을 삭제
  1. 1 1
      android/app/build.gradle
  2. 2 2
      ios/App/App.xcodeproj/project.pbxproj
  3. 9 0
      package-lock.json
  4. 1 0
      package.json
  5. 296 0
      src/locales/es.json
  6. 9 0
      src/plugins/time.js
  7. 3 3
      src/version.json
  8. 2 2
      src/views/EditBankPage.vue
  9. 34 32
      src/views/HomePage.vue

+ 1 - 1
android/app/build.gradle

@@ -6,7 +6,7 @@ android {
         applicationId "com.bigauction.mobile"
         minSdkVersion rootProject.ext.minSdkVersion
         targetSdkVersion rootProject.ext.targetSdkVersion
-        versionCode 99
+        versionCode 100
         versionName "1.0.0"
         testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
         aaptOptions {

+ 2 - 2
ios/App/App.xcodeproj/project.pbxproj

@@ -352,7 +352,7 @@
 				CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES = NO;
 				CODE_SIGN_ENTITLEMENTS = App/App.entitlements;
 				CODE_SIGN_STYLE = Automatic;
-				CURRENT_PROJECT_VERSION = 99;
+				CURRENT_PROJECT_VERSION = 100;
 				DEFINES_MODULE = NO;
 				DEVELOPMENT_TEAM = 72P5Y6N578;
 				INFOPLIST_FILE = App/Info.plist;
@@ -377,7 +377,7 @@
 				CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES = NO;
 				CODE_SIGN_ENTITLEMENTS = App/App.entitlements;
 				CODE_SIGN_STYLE = Automatic;
-				CURRENT_PROJECT_VERSION = 99;
+				CURRENT_PROJECT_VERSION = 100;
 				DEFINES_MODULE = NO;
 				DEVELOPMENT_TEAM = 72P5Y6N578;
 				INFOPLIST_FILE = App/Info.plist;

+ 9 - 0
package-lock.json

@@ -43,6 +43,7 @@
         "capacitor-plugin-safe-area": "^1.0.1",
         "cordova-plugin-android-notch": "^1.0.3",
         "date-fns": "^2.29.3",
+        "date-fns-tz": "^2.0.0",
         "eruda": "^2.6.1",
         "eruda-benchmark": "^2.0.0",
         "eruda-code": "^2.1.0",
@@ -5568,6 +5569,14 @@
         "url": "https://opencollective.com/date-fns"
       }
     },
+    "node_modules/date-fns-tz": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/date-fns-tz/-/date-fns-tz-2.0.0.tgz",
+      "integrity": "sha512-OAtcLdB9vxSXTWHdT8b398ARImVwQMyjfYGkKD2zaGpHseG2UPHbHjXELReErZFxWdSLph3c2zOaaTyHfOhERQ==",
+      "peerDependencies": {
+        "date-fns": ">=2.0.0"
+      }
+    },
     "node_modules/dateformat": {
       "version": "3.0.3",
       "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz",

+ 1 - 0
package.json

@@ -44,6 +44,7 @@
     "capacitor-plugin-safe-area": "^1.0.1",
     "cordova-plugin-android-notch": "^1.0.3",
     "date-fns": "^2.29.3",
+    "date-fns-tz": "^2.0.0",
     "eruda": "^2.6.1",
     "eruda-benchmark": "^2.0.0",
     "eruda-code": "^2.1.0",

+ 296 - 0
src/locales/es.json

@@ -0,0 +1,296 @@
+{
+    "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"
+    },
+    "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%"
+    },
+    "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"
+    },
+    "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"
+    },
+    "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"
+    },
+    "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"
+    },
+    "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"
+    }
+}

+ 9 - 0
src/plugins/time.js

@@ -0,0 +1,9 @@
+import { utcToZonedTime } from 'date-fns-tz'
+function getUtcTime(date) {
+    const localTimeZone = Intl.DateTimeFormat().resolvedOptions().timeZone
+    // const localTimeZone = 'America/New_York'
+    const _date = utcToZonedTime(date, localTimeZone)
+    return _date
+}
+
+export { getUtcTime }

+ 3 - 3
src/version.json

@@ -1,12 +1,12 @@
 {
     "ios": {
         "version": "1.0.0",
-        "build": 99
+        "build": 100
     },
     "android": {
         "version": "1.0.0",
-        "build": 99,
+        "build": 100,
         "versionCode": 12
     },
-    "www": 1084
+    "www": 1085
 }

+ 2 - 2
src/views/EditBankPage.vue

@@ -19,11 +19,11 @@
             </div>
 
             <div class="input-sec">
-                <div class="title">{{ $t('bank.account') }}</div>
+                <div class="title">{{ (formData.bankName ? formData.bankName + ' ' : '') + $t('bank.account') }}</div>
                 <div class="input-wrapper">
                     <ion-input
                         typeof="number"
-                        :placeholder="$t('bank.account')"
+                        :placeholder="(formData.bankName ? formData.bankName + ' ' : '') + $t('bank.account')"
                         clear-input
                         type="number"
                         inputmode="decimal"

+ 34 - 32
src/views/HomePage.vue

@@ -98,7 +98,7 @@
                             </div> -->
                                 <div class="text">
                                     {{ $t('balance.withdraw') }}&nbsp;<span class="nor">{{ $t('balance.symbol') }}</span
-                                    >{{ item.val }}
+                                    >{{ item.money }}
                                 </div>
                             </div>
 
@@ -113,7 +113,7 @@
                             </div> -->
                                 <div class="text">
                                     {{ $t('balance.withdraw') }}&nbsp;<span class="nor">{{ $t('balance.symbol') }}</span
-                                    >{{ item.val }}
+                                    >{{ item.money }}
                                 </div>
                             </div>
 
@@ -206,6 +206,7 @@ import IntroductionModal from '../components/IntroductionModal.vue'
 import { useStorage } from '@vueuse/core'
 import { init as initEruda } from '@/utils/console'
 import { emitter } from '@/utils/eventBus'
+import { getUtcTime } from '@/plugins/time'
 
 const router = useRouter()
 
@@ -365,20 +366,18 @@ watch(route, value => {
 
 const getStatus = info => {
     let date1 = getYear(new Date()) + '/' + (getMonth(new Date()) + 1) + '/' + getDate(new Date())
+    let startDate = getUtcTime(new Date(date1 + ' ' + info.saleStart))
+    let endDate = getUtcTime(new Date(date1 + ' ' + info.saleEnd))
     if (info && info.saleStart) {
-        if (
-            isAfter(new Date(), new Date(date1 + ' ' + info.saleStart)) &&
-            isBefore(new Date(), new Date(date1 + ' ' + info.saleEnd)) &&
-            !info.empty
-        ) {
+        if (isAfter(new Date(), startDate) && isBefore(new Date(), endDate) && !info.empty) {
             return '抢购中'
-        } else if (isBefore(new Date(), new Date(date1 + ' ' + info.saleStart))) {
-            return getTime(new Date(date1 + ' ' + info.saleStart), 1) - getTime(new Date())
-        } else if (info.empty && isBefore(new Date(), new Date(date1 + ' ' + info.saleEnd))) {
+        } else if (isBefore(new Date(), startDate)) {
+            return getTime(startDate, 1) - getTime(new Date())
+        } else if (info.empty && isBefore(new Date(), endDate)) {
             return '已抢光'
         }
         {
-            return getTime(addDays(new Date(date1 + ' ' + info.saleStart), 1)) - getTime(new Date())
+            return getTime(addDays(startDate, 1)) - getTime(new Date())
         }
     }
     return ''
@@ -390,27 +389,30 @@ function randomS() {
     return chars[Math.floor(Math.random() * chars.length)]
 }
 function getRank() {
-    let profitListJson = localStorage.getItem('profitList')
-    if (profitListJson) {
-        profitListJson = JSON.parse(profitListJson)
-        if (new Date().getTime() < profitListJson.expire) {
-            profitList.value = profitListJson.data
-            return
-        }
-    }
-    profitList.value = Array.from({ length: 10 }, (v, i) => {
-        return {
-            nickname: randomS() + '***' + randomS(),
-            val: randomNum(100, 1000)
-        }
+    http.get('/withdrawApply/recentWithdraw').then(res => {
+        profitList.value = res
     })
-    localStorage.setItem(
-        'profitList',
-        JSON.stringify({
-            data: profitList.value,
-            expire: new Date().getTime() + 1000 * 60 * 60 * 24
-        })
-    )
+    // let profitListJson = localStorage.getItem('profitList')
+    // if (profitListJson) {
+    //     profitListJson = JSON.parse(profitListJson)
+    //     if (new Date().getTime() < profitListJson.expire) {
+    //         profitList.value = profitListJson.data
+    //         return
+    //     }
+    // }
+    // profitList.value = Array.from({ length: 10 }, (v, i) => {
+    //     return {
+    //         nickname: randomS() + '***' + randomS(),
+    //         val: randomNum(100, 1000)
+    //     }
+    // })
+    // localStorage.setItem(
+    //     'profitList',
+    //     JSON.stringify({
+    //         data: profitList.value,
+    //         expire: new Date().getTime() + 1000 * 60 * 60 * 24
+    //     })
+    // )
 }
 
 function randomNum(minNum, maxNum) {
@@ -463,7 +465,7 @@ function showConsoleEve() {
     }
 }
 function formatTime(time) {
-    return format(parse(time, 'HH:mm:ss', new Date()), 'HH:mm a')
+    return format(getUtcTime(parse(time, 'HH:mm:ss', new Date())), 'HH:mm a')
 }
 
 function customer() {