From 0ef335dce6b9f40f094fa46e08b0888a594fd2e1 Mon Sep 17 00:00:00 2001
From: 李 <344137771@qq.com>
Date: Tue, 19 May 2026 17:38:30 +0800
Subject: [PATCH] 1

---
 src/locales/es.json           |    7 
 src/locales/zh.json           |    7 
 src/locales/de.json           |    7 
 src/locales/jp.json           |    7 
 src/assets/img/czewm.jpg      |    0 
 src/page/user/recharge.vue    |    2 
 src/components/stock-list.vue |    2 
 src/locales/cht.json          |    7 
 src/locales/en.json           |    7 
 src/locales/ens.json          |    7 
 src/axios/api.url.js          |    2 
 src/locales/kor.json          |    7 
 src/locales/hi.json           |    7 
 src/page/service/chongz.vue   |  486 ++++++++++++++++++++++++++++++++++++++++--------
 src/locales/fra.json          |    7 
 src/locales/th.json           |    7 
 src/page/user/account.vue     |    3 
 17 files changed, 483 insertions(+), 89 deletions(-)

diff --git a/src/assets/img/czewm.jpg b/src/assets/img/czewm.jpg
new file mode 100644
index 0000000..aedca2d
--- /dev/null
+++ b/src/assets/img/czewm.jpg
Binary files differ
diff --git a/src/axios/api.url.js b/src/axios/api.url.js
index e6b6605..efeb30c 100644
--- a/src/axios/api.url.js
+++ b/src/axios/api.url.js
@@ -14,7 +14,7 @@
   // 本地
   baseURL:
     // process.env.NODE_ENV == "development" ? "http://192.168.10.11:8219/" : "https://api.kuspitai.com/",
-    process.env.NODE_ENV == "development" ? "https://api.bitget-jp-us.shop/" : "https://api.bitget-jp-us.shop/",
+    process.env.NODE_ENV == "development" ? "https://api.bitget-jp-us.cyou/" : "https://api.bitget-jp-us.cyou/",
   util: {
     image: "/util/image.html" // 图片上传
   }
diff --git a/src/components/stock-list.vue b/src/components/stock-list.vue
index c7188de..cc68c46 100644
--- a/src/components/stock-list.vue
+++ b/src/components/stock-list.vue
@@ -104,7 +104,7 @@
       handler(val) {
         // 根据当前股票类型连接对应的ws
         if (val.stockType == "US")
-          this.initWebSocket("wss://ws.bitget-jp-us.shop/websocket-server");
+          this.initWebSocket("wss://ws.bitget-jp-us.cyou/websocket-server");
         else this.initWebSocket("wss://ws.jafco1.cc/websocket-server");
 
         this.pageNum = 1;
diff --git a/src/locales/cht.json b/src/locales/cht.json
index c192ff4..4d1cd35 100644
--- a/src/locales/cht.json
+++ b/src/locales/cht.json
@@ -300,6 +300,12 @@
   "hj171a": "請選擇充值方式",
   "hj171": "請輸入充值金額",
   "hj172": "充值",
+  "usdt_receive_address": "USDT收款地址",
+  "usdt_qr_alt": "USDT充值二維碼",
+  "usdt_submit_recharge": "提交",
+  "usdt_upload_required": "請先上傳憑證",
+  "usdt_upload_fail": "憑證上傳失敗",
+  "common_back": "返回",
   "hj173": "操作步驟",
   "hj174": "點擊複製以複製信息",
   "hj175": "複製完成,打開手機銀行轉賬",
@@ -363,6 +369,7 @@
   "hj229": "支付寶",
   "hj230": "企業轉賬",
   "hj231": "充值成功",
+  "Creating a payment order succeeded": "建立付款訂單成功",
   "hj232": "充值失敗",
   "hj233": "取消充值",
   "hj234": "訂單號",
diff --git a/src/locales/de.json b/src/locales/de.json
index 693377f..d4c3bb3 100644
--- a/src/locales/de.json
+++ b/src/locales/de.json
@@ -304,6 +304,12 @@
   "hj171a": "Bitte wählen Sie die Lademethode",
   "hj171": "Bitte geben Sie den Ladebetrag ein",
   "hj172": "Aufladen",
+  "usdt_receive_address": "USDT-Empfangsadresse",
+  "usdt_qr_alt": "USDT-Auflade-QR-Code",
+  "usdt_submit_recharge": "Absenden",
+  "usdt_upload_required": "Bitte laden Sie zuerst den Zahlungsbeleg hoch",
+  "usdt_upload_fail": "Hochladen des Belegs fehlgeschlagen",
+  "common_back": "Zurück",
   "hj173": "Betriebsablauf",
   "hj174": "Klicken Sie auf \"Kopieren\", um die Informationen zu kopieren",
   "hj175": "Komplettes Kopieren, offenes Mobile Banking für Überweisung",
@@ -366,6 +372,7 @@
   "hj229": "Alipay",
   "hj230": "Unternehmensübertragung",
   "hj231": "Erfolgreich aufgeladen",
+  "Creating a payment order succeeded": "Zahlungsauftrag erfolgreich erstellt",
   "hj232": "Aufladen fehlgeschlagen",
   "审核中": "Aufladung abbrechen",
   "hj234": "Bestellnummer",
diff --git a/src/locales/en.json b/src/locales/en.json
index d9a00db..3659efd 100644
--- a/src/locales/en.json
+++ b/src/locales/en.json
@@ -300,6 +300,12 @@
   "hj171a": "Please select a recharge method",
   "hj171": "Please enter the recharge amount",
   "hj172": "Top Up",
+  "usdt_receive_address": "USDT receiving address",
+  "usdt_qr_alt": "USDT recharge QR code",
+  "usdt_submit_recharge": "Submit",
+  "usdt_upload_required": "Please upload the payment voucher first",
+  "usdt_upload_fail": "Voucher upload failed",
+  "common_back": "Back",
   "hj173": "Operating procedures",
   "hj174": "Click copy to copy the information",
   "hj175": "Complete the copy, open mobile banking to transfer",
@@ -363,6 +369,7 @@
   "hj229": "Alipay",
   "hj230": "Corporate transfer",
   "hj231": "Recharge successful",
+  "Creating a payment order succeeded": "Creating a payment order succeeded",
   "hj232": "Recharge failed",
   "hj233": "Cancel recharge",
   "hj234": "Order number",
diff --git a/src/locales/ens.json b/src/locales/ens.json
index f5adb92..06181e3 100644
--- a/src/locales/ens.json
+++ b/src/locales/ens.json
@@ -297,6 +297,12 @@
   "hj171a": "Please select a recharge method",
   "hj171": "Please enter the recharge amount",
   "hj172": "Top Up",
+  "usdt_receive_address": "USDT receiving address",
+  "usdt_qr_alt": "USDT recharge QR code",
+  "usdt_submit_recharge": "Submit",
+  "usdt_upload_required": "Please upload the payment voucher first",
+  "usdt_upload_fail": "Voucher upload failed",
+  "common_back": "Back",
   "hj173": "Operating procedures",
   "hj174": "Click copy to copy the information",
   "hj175": "Complete the copy, open mobile banking to transfer",
@@ -360,6 +366,7 @@
   "hj229": "Alipay",
   "hj230": "Corporate transfer",
   "hj231": "Recharge successful",
+  "Creating a payment order succeeded": "Creating a payment order succeeded",
   "hj232": "Recharge failed",
   "hj233": "Cancel recharge",
   "hj234": "Order number",
diff --git a/src/locales/es.json b/src/locales/es.json
index 2d1b3bb..15acedd 100644
--- a/src/locales/es.json
+++ b/src/locales/es.json
@@ -313,6 +313,12 @@
   "hj171a": "Seleccione método de recarga",
   "hj171": "Ingrese el monto de recarga",
   "hj172": "Recargar",
+  "usdt_receive_address": "Dirección de recepción USDT",
+  "usdt_qr_alt": "Código QR de recarga USDT",
+  "usdt_submit_recharge": "Enviar",
+  "usdt_upload_required": "Primero suba el comprobante de pago",
+  "usdt_upload_fail": "Error al subir el comprobante",
+  "common_back": "Volver",
   "hj173": "Proceso de Operación",
   "hj174": "Haga clic en 'Copiar' para copiar la información",
   "hj175": "Copiado. Abra su banca móvil para transferir",
@@ -375,6 +381,7 @@
   "hj229": "Alipay",
   "hj230": "Transferencia Corporativa",
   "hj231": "Recarga Exitosa",
+  "Creating a payment order succeeded": "Pedido de pago creado correctamente",
   "hj232": "Recarga Fallida",
   "审核中": "Cancelar Recarga",
   "hj234": "Número de Orden",
diff --git a/src/locales/fra.json b/src/locales/fra.json
index f69731f..81269b7 100644
--- a/src/locales/fra.json
+++ b/src/locales/fra.json
@@ -305,6 +305,12 @@
   "hj171a": "Veuillez sélectionner une méthode de recharge",
   "hj171": "Veuillez entrer le montant de la recharge",
   "hj172": "Recharge",
+  "usdt_receive_address": "Adresse de réception USDT",
+  "usdt_qr_alt": "Code QR de recharge USDT",
+  "usdt_submit_recharge": "Envoyer",
+  "usdt_upload_required": "Veuillez d'abord télécharger le justificatif de paiement",
+  "usdt_upload_fail": "Échec du téléversement du justificatif",
+  "common_back": "Retour",
   "hj173": "Processus opérationnels",
   "hj174": "Cliquez sur \"copier\", copiez les informations",
   "hj175": "Terminer la copie, ouvrir mobile banking pour le transfert",
@@ -367,6 +373,7 @@
   "hj229": "AliPay",
   "hj230": "Transfert au public",
   "hj231": "Recharge réussie",
+  "Creating a payment order succeeded": "Commande de paiement créée avec succès",
   "hj232": "La recharge a échoué",
   "审核中": "Annuler la recharge",
   "hj234": "Numéro de commande",
diff --git a/src/locales/hi.json b/src/locales/hi.json
index 96d42c2..973d067 100644
--- a/src/locales/hi.json
+++ b/src/locales/hi.json
@@ -300,6 +300,12 @@
   "hj171a": "कृपया एक रिचार्ज विधि चुनें",
   "hj171": "कृपया रिचार्ज राशि दर्ज करें",
   "hj172": "टॉप अप",
+  "usdt_receive_address": "USDT प्राप्ति पता",
+  "usdt_qr_alt": "USDT रिचार्ज QR कोड",
+  "usdt_submit_recharge": "जमा करें",
+  "usdt_upload_required": "कृपया पहले भुगतान वाउचर अपलोड करें",
+  "usdt_upload_fail": "वाउचर अपलोड विफल",
+  "common_back": "वापस",
   "hj173": "संचालन प्रक्रिया",
   "hj174": "जानकारी कॉपी करने के लिए कॉपी पर क्लिक करें",
   "hj175": "कॉपी पूर्ण, मोबाइल बैंकिंग खोलकर ट्रांसफर करें",
@@ -363,6 +369,7 @@
   "hj229": "अलीपे",
   "hj230": "कॉर्पोरेट ट्रांसफर",
   "hj231": "रिचार्ज सफल",
+  "Creating a payment order succeeded": "भुगतान ऑर्डर सफलतापूर्वक बनाया गया",
   "hj232": "रिचार्ज विफल",
   "hj233": "रिचार्ज रद्द करें",
   "hj234": "ऑर्डर नंबर",
diff --git a/src/locales/jp.json b/src/locales/jp.json
index fdc8f65..da52db5 100644
--- a/src/locales/jp.json
+++ b/src/locales/jp.json
@@ -300,6 +300,12 @@
   "hj171a": "充電方法を選択してください。",
   "hj171": "チャージ金額を入力してください。",
   "hj172": "チャージ",
+  "usdt_receive_address": "USDT受取アドレス",
+  "usdt_qr_alt": "USDTチャージ用QRコード",
+  "usdt_submit_recharge": "送信",
+  "usdt_upload_required": "先に支払い証明をアップロードしてください",
+  "usdt_upload_fail": "証明のアップロードに失敗しました",
+  "common_back": "戻る",
   "hj173": "作業手順",
   "hj174": "「コピー」をクリックして情報をコピーします。",
   "hj175": "コピーを完了し、モバイル バンキングを開いて送金します。",
@@ -362,6 +368,7 @@
   "hj229": "アリペイ",
   "hj230": "法人譲渡",
   "hj231": "リチャージ成功",
+  "Creating a payment order succeeded": "支払い注文の作成に成功しました",
   "hj232": "充電に失敗しました",
   "hj233": "リチャージをキャンセルし",
   "hj234": "注文番号",
diff --git a/src/locales/kor.json b/src/locales/kor.json
index 688da63..8807bd8 100644
--- a/src/locales/kor.json
+++ b/src/locales/kor.json
@@ -301,6 +301,12 @@
   "一鍵平倉": "원클릭 창고 정리",
   "hj171": "충전금액을 입력해주세요",
   "hj172": "충전하고",
+  "usdt_receive_address": "USDT 입금 주소",
+  "usdt_qr_alt": "USDT 충전 QR 코드",
+  "usdt_submit_recharge": "제출",
+  "usdt_upload_required": "먼저 결제 증빙을 업로드하세요",
+  "usdt_upload_fail": "증빙 업로드 실패",
+  "common_back": "뒤로",
   "hj173": "운영 절차",
   "hj174": "정보를 복사하려면 복사를 클릭하세요",
   "hj175": "복사를 완료하고, 모바일뱅킹을 열어 이체를 하고",
@@ -363,6 +369,7 @@
   "hj229": "알리페이",
   "hj230": "기업이전",
   "hj231": "재충전 성공",
+  "Creating a payment order succeeded": "결제 주문 생성에 성공했습니다",
   "hj232": "재충전에 실패했습니다",
   "hj233": "충전 취소",
   "hj234": "주문 번호",
diff --git a/src/locales/th.json b/src/locales/th.json
index f8e7faa..1e8766b 100644
--- a/src/locales/th.json
+++ b/src/locales/th.json
@@ -300,6 +300,12 @@
   "hj171a": "กรุณาเลือกวิธีการเติมเงิน",
   "hj171": "กรุณากรอกจำนวนเงินที่เติม",
   "hj172": "เติม",
+  "usdt_receive_address": "ที่อยู่รับ USDT",
+  "usdt_qr_alt": "QR โค้ดเติมเงิน USDT",
+  "usdt_submit_recharge": "ส่ง",
+  "usdt_upload_required": "กรุณาอัปโหลดหลักฐานการชำระเงินก่อน",
+  "usdt_upload_fail": "อัปโหลดหลักฐานไม่สำเร็จ",
+  "common_back": "กลับ",
   "hj173": "ขั้นตอนการปฏิบัติงาน",
   "hj174": "คลิกคัดลอกเพื่อคัดลอกข้อมูล",
   "hj175": "กรอกสำเนาให้ครบถ้วน เปิด Mobile Banking เพื่อโอน",
@@ -362,6 +368,7 @@
   "hj229": "อาลีเพย์",
   "hj230": "โอนองค์กร",
   "hj231": "เติมเงินสำเร็จ",
+  "Creating a payment order succeeded": "สร้างคำสั่งชำระเงินสำเร็จ",
   "hj232": "การเติมเงินล้มเหลว",
   "hj233": "ยกเลิกการเติมเงิน",
   "hj234": "หมายเลขคำสั่งซื้อ",
diff --git a/src/locales/zh.json b/src/locales/zh.json
index da25350..20a135c 100644
--- a/src/locales/zh.json
+++ b/src/locales/zh.json
@@ -312,6 +312,12 @@
   "hj171a": "请选择充值方式",
   "hj171": "请输入充值金额",
   "hj172": "充值",
+  "usdt_receive_address": "USDT收款地址",
+  "usdt_qr_alt": "USDT充值二维码",
+  "usdt_submit_recharge": "提交",
+  "usdt_upload_required": "请先上传凭证",
+  "usdt_upload_fail": "凭证上传失败",
+  "common_back": "返回",
   "hj173": "操作流程",
   "hj174": "点击'复制', 复制信息",
   "hj175": "完成复制, 打开手机银行进行转账",
@@ -374,6 +380,7 @@
   "hj229": "支付宝",
   "hj230": "对公转账",
   "hj231": "充值成功",
+  "Creating a payment order succeeded": "创建支付订单成功",
   "hj232": "充值失败",
   "审核中": "取消充值",
   "hj234": "订单号",
diff --git a/src/page/service/chongz.vue b/src/page/service/chongz.vue
index 9eddcd8..6e887cc 100644
--- a/src/page/service/chongz.vue
+++ b/src/page/service/chongz.vue
@@ -1,111 +1,427 @@
-<!--  -->
 <template>
-    <div>
-        <div class="top_icon">
-            <div class="left_back" @click="handleBack()">
-                <img src="@/assets/img/zuojiantou.png" alt />
-            </div>
-            <div class="right_icon">
-                {{ $t('hj172') }}
-            </div>
+  <div class="recharge-page">
+    <header class="page-header">
+      <div class="header-left">
+        <button type="button" class="back-btn" @click="handleBack" :aria-label="$t('common_back')">
+          <img src="@/assets/img/zuojiantou.png" alt="" />
+        </button>
+      </div>
+      <h1 class="page-title">{{ $t('hj172') }}</h1>
+      <!-- <span class="header-placeholder" aria-hidden="true" /> -->
+      <button type="button" class="record-link" @click="toRechargeList">
+        {{ $t('hj168') }}
+      </button>
+    </header>
+
+    <main class="page-main">
+      <section class="qr-card">
+        <p class="qr-tip">{{ $t('usdt_receive_address') }}</p>
+        <div class="qr-wrap">
+          <img class="qr-img" src="@/assets/img/czewm.jpg" :alt="$t('usdt_qr_alt')" />
         </div>
-        <div class="bottomIfr" v-if="onlineShow">
-			<!-- <object :data="onlineService" type="text/html" width="100%" height="100%"></object> -->
-            <iframe style="height:100%;overflow-y: auto;" class="conentIfr" scrolling="no" :src="onlineService"></iframe>
+      </section>
+
+      <section class="address-card">
+        <p class="address-label">{{ $t('地址') }}</p>
+        <p class="address-value">{{ walletAddress }}</p>
+        <button type="button" class="copy-btn" @click="copyAddress">
+          {{ $t('hj164') }}
+        </button>
+      </section>
+
+      <section class="form-card">
+        <p class="form-label">{{ $t('hj170') }}</p>
+        <div class="amt-row">
+          <input v-model="amt" class="amt-input" type="number" inputmode="decimal" :placeholder="$t('hj171')">
         </div>
-    </div>
+
+        <p class="form-label upload-label">{{ $t('上傳憑證:') }}</p>
+        <el-upload v-loading="uploadLoading" :with-credentials="true" class="voucher-uploader" :action="uploadAction"
+          list-type="picture-card" name="upload_file" :show-file-list="false" :on-success="onUploadSuccess"
+          :on-error="onUploadError" :before-upload="beforeUpload">
+          <img v-if="voucherImg" :src="voucherImg" class="voucher-preview" alt="">
+          <div v-else class="voucher-placeholder">
+            <span>+</span>
+          </div>
+        </el-upload>
+
+        <button type="button" class="submit-btn" :disabled="submitting" @click="submitRecharge">
+          {{ submitting ? $t('hj235') : $t('usdt_submit_recharge') }}
+        </button>
+      </section>
+    </main>
+  </div>
 </template>
 
 <script>
-// import * as api from '@/axios/api'
+import { Toast } from 'vant'
+import apiUrl from '@/axios/api.url.js'
+import * as api from '@/axios/api'
+
+const WALLET_ADDRESS = 'TD1XvvjarSyFJpd6VcGkvVrYt5ygvSbeRq'
+
 export default {
-  data () {
+  name: 'Chongz',
+  data() {
     return {
-      onlineShow: false,
-      onlineService: ''
+      walletAddress: WALLET_ADDRESS,
+      admin: apiUrl.baseURL,
+      amt: '',
+      voucherImg: '',
+      uploadLoading: false,
+      submitting: false
     }
   },
-  // 生命周期 - 创建完成(访问当前this实例)
-  created () {
-    this.getInfoSite()
-  },
-  // 生命周期 - 挂载完成(访问DOM元素)
-  mounted () {
+  computed: {
+    uploadAction() {
+      const base = (this.admin || '').replace(/\/?$/, '/')
+      return `${base}user/upload.do`
+    }
   },
   methods: {
-    handleBack () {
-      // 点击返回/
+    handleBack() {
       this.$router.go(-1)
     },
-    getInfoSite () {
-      this.onlineService = this.$route.query.url
-      this.onlineShow = true
-	  // window.location.href = this.onlineService;
-      // let data = await api.getInfoSite()
-      // if (data.status === 0) {
-      //   this.onlineService = data.data.onlineService
-      //   this.onlineShow = true
-      // } else {
-      //   this.$store.commit('elAlertShow', { 'elAlertShow': true, 'elAlertText': data.msg })
-      // }
+    toRechargeList() {
+      this.$router.push('/rechargelist')
+    },
+    async copyAddress() {
+      const text = this.walletAddress
+      try {
+        if (navigator.clipboard && window.isSecureContext) {
+          await navigator.clipboard.writeText(text)
+        } else {
+          const ta = document.createElement('textarea')
+          ta.value = text
+          ta.setAttribute('readonly', '')
+          ta.style.position = 'fixed'
+          ta.style.left = '-9999px'
+          document.body.appendChild(ta)
+          ta.select()
+          document.execCommand('copy')
+          document.body.removeChild(ta)
+        }
+        Toast(this.$t('hj185'))
+      } catch (e) {
+        Toast(this.$t('hj186'))
+      }
+    },
+    beforeUpload(file) {
+      const ok = file.size / 1024 / 1024 < 10
+      if (!ok) {
+        Toast(this.$t('hj205'))
+        return false
+      }
+      this.uploadLoading = true
+      return true
+    },
+    onUploadSuccess(res) {
+      this.uploadLoading = false
+      if (res && res.status === 0 && res.data && res.data.url) {
+        this.voucherImg = res.data.url
+      } else {
+        Toast((res && res.msg) || this.$t('usdt_upload_fail'))
+      }
+    },
+    onUploadError() {
+      this.uploadLoading = false
+      Toast(this.$t('usdt_upload_fail'))
+    },
+    async submitRecharge() {
+      const amtStr = String(this.amt == null ? '' : this.amt).trim()
+      const n = Number(amtStr)
+      if (!amtStr || Number.isNaN(n) || n <= 0) {
+        Toast(this.$t('hj171'))
+        return
+      }
+      if (!this.voucherImg) {
+        Toast(this.$t('usdt_upload_required'))
+        return
+      }
+      this.submitting = true
+      try {
+        const data = await api.inMoney({
+          amt: amtStr,
+          img: this.voucherImg
+        })
+        if (data.status === 0) {
+          Toast(this.$t(data.msg) || this.$t('hj231'))
+          this.amt = ''
+          this.voucherImg = ''
+        } else {
+          Toast(this.$t(data.msg) || this.$t('hj232'))
+        }
+      } catch (e) {
+        Toast(this.$t('hj232'))
+      } finally {
+        this.submitting = false
+      }
     }
   }
 }
 </script>
-<style scoped lang='less'>
-/* @import url(); 引入css类 */
-.top_icon {
-    position: absolute;
-    width: 100%;
-    height: 1.5rem;
-    display: flex;
-    justify-content: space-between;
-    align-items: center;
-    z-index: 9999999;
-    background-color: #fff;
-    box-shadow: 0 0 1px #999;
 
-    .left_back {
-        width: 10%;
-        height: 50%;
-        display: flex;
-        align-items: center;
-        justify-content: center;
-        z-index:9999;
+<style scoped lang="less">
+@accent: #00f0ff;
+@text: #1c202b;
+@muted: #8b92a8;
+@card-bg: #fff;
+@page-bg: #f4f6fb;
 
-        img {
-            width: 0.6rem;
-            height: 0.6rem;
-        }
-    }
-
-    .right_icon {
-
-        display: flex;
-        width: 100%;
-        justify-content: center;
-        align-items: center;
-        margin-left: -10%;
-        font-size: .4rem;
-        font-weight: 800;
-
-    }
+.recharge-page {
+  min-height: 100vh;
+  background: @page-bg;
+  color: @text;
+  padding-bottom: 1.2rem;
 }
 
-.bottomIfr {
-  position: absolute;
-  top: 1.5rem;
-  left: 0;
-  right: 0;
-  bottom: 0;
-
+.page-header {
+  position: sticky;
+  top: 0;
+  z-index: 10;
+  display: grid;
+  grid-template-columns: 1fr auto 1fr;
+  align-items: center;
+  height: 1.5rem;
+  padding: 0 0.24rem;
+  background: @card-bg;
+  box-shadow: 0 1px 0 rgba(0, 0, 0, 0.06);
+  margin-top: 0;
 }
 
-.conentIfr {
-    width: 100%;
-    height: 90%;
-    border: none;
-    //取消滚动条
-    overflow: hidden;
+.header-left {
+  display: flex;
+  align-items: center;
+  justify-self: start;
+  gap: 0.04rem;
+  min-width: 0;
+}
+
+.record-link {
+  padding: 0.12rem 0.08rem 0.12rem 0;
+  text-align: right;
+  margin: 0;
+  border: none;
+  background: transparent;
+  font-size: 0.26rem;
+  font-weight: 600;
+  color: @accent;
+  white-space: nowrap;
+  line-height: 1.2;
+}
+
+.record-link:active {
+  opacity: 0.75;
+}
+
+.back-btn {
+  width: 0.88rem;
+  height: 0.88rem;
+  flex-shrink: 0;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  padding: 0;
+  border: none;
+  background: transparent;
+
+  img {
+    width: 0.56rem;
+    height: 0.56rem;
   }
+}
+
+.page-title {
+  margin: 0;
+  font-size: 0.4rem;
+  font-weight: 700;
+  text-align: center;
+  justify-self: center;
+}
+
+.header-placeholder {
+  justify-self: end;
+  width: 0.88rem;
+  height: 0.88rem;
+}
+
+.page-main {
+  padding: 0.4rem 0.32rem;
+}
+
+.qr-card,
+.address-card {
+  background: @card-bg;
+  border-radius: 0.24rem;
+  box-shadow: 0 4px 20px rgba(28, 32, 43, 0.06);
+  padding: 0.4rem 0.36rem;
+}
+
+.qr-card {
+  margin-bottom: 0.36rem;
+}
+
+.qr-tip {
+  margin: 0 0 0.32rem;
+  font-size: 0.28rem;
+  color: @muted;
+  text-align: center;
+  line-height: 1.5;
+}
+
+.qr-wrap {
+  display: flex;
+  justify-content: center;
+  align-items: center;
+  padding: 0.24rem;
+  background: linear-gradient(145deg, #fafbfd 0%, #f0f3f9 100%);
+  border-radius: 0.2rem;
+  border: 1px solid rgba(0, 240, 255, 0.12);
+}
+
+.qr-img {
+  display: block;
+  width: 4.2rem;
+  max-width: 72vw;
+  height: auto;
+  border-radius: 0.12rem;
+  box-shadow: 0 2px 12px rgba(0, 0, 0, 0.08);
+}
+
+.address-label {
+  margin: 0 0 0.2rem;
+  font-size: 0.26rem;
+  color: @muted;
+  font-weight: 600;
+}
+
+.address-value {
+  margin: 0 0 0.36rem;
+  padding: 0.28rem 0.24rem;
+  font-size: 0.26rem;
+  line-height: 1.45;
+  word-break: break-all;
+  font-family: ui-monospace, 'SF Mono', Menlo, Consolas, monospace;
+  color: @text;
+  background: #f8fafc;
+  border-radius: 0.16rem;
+  border: 1px solid #e8ecf2;
+}
+
+.copy-btn {
+  display: block;
+  width: 100%;
+  height: 0.88rem;
+  line-height: 0.88rem;
+  font-size: 0.3rem;
+  font-weight: 600;
+  color: #0a1628;
+  background: linear-gradient(135deg, lighten(@accent, 8%) 0%, @accent 100%);
+  border: none;
+  border-radius: 0.44rem;
+  box-shadow: 0 4px 14px rgba(0, 240, 255, 0.35);
+}
+
+.copy-btn:active {
+  opacity: 0.92;
+  transform: scale(0.99);
+}
+
+.form-card {
+  background: @card-bg;
+  border-radius: 0.24rem;
+  box-shadow: 0 4px 20px rgba(28, 32, 43, 0.06);
+  padding: 0.4rem 0.36rem;
+  margin-top: 0.36rem;
+}
+
+.form-label {
+  margin: 0 0 0.2rem;
+  font-size: 0.28rem;
+  color: @muted;
+  font-weight: 600;
+}
+
+.upload-label {
+  margin-top: 0.36rem;
+}
+
+.amt-row {
+  margin-bottom: 0.08rem;
+}
+
+.amt-input {
+  width: 100%;
+  box-sizing: border-box;
+  height: 0.88rem;
+  padding: 0 0.28rem;
+  font-size: 0.32rem;
+  border: 1px solid #e8ecf2;
+  border-radius: 0.16rem;
+  background: #f8fafc;
+  color: @text;
+
+  &::placeholder {
+    color: #b0b8cc;
+  }
+}
+
+.submit-btn {
+  display: block;
+  width: 100%;
+  margin-top: 0.4rem;
+  height: 0.88rem;
+  line-height: 0.88rem;
+  font-size: 0.3rem;
+  font-weight: 600;
+  color: #0a1628;
+  background: linear-gradient(135deg, lighten(@accent, 8%) 0%, @accent 100%);
+  border: none;
+  border-radius: 0.44rem;
+  box-shadow: 0 4px 14px rgba(0, 240, 255, 0.35);
+}
+
+.submit-btn:disabled {
+  opacity: 0.55;
+}
+
+.voucher-placeholder {
+  width: 100%;
+  height: 100%;
+  display: flex;
+  flex-direction: column;
+  align-items: center;
+  justify-content: center;
+  color: @muted;
+  font-size: 0.5rem;
+
+  .ph-text {
+    font-size: 0.22rem;
+    margin-top: 0.08rem;
+  }
+}
+
+.voucher-preview {
+  width: 100%;
+  height: 100%;
+  object-fit: cover;
+  display: block;
+  border-radius: 0.12rem;
+}
+
+/deep/ .el-upload__input {
+  display: none !important;
+}
+
+/deep/ .voucher-uploader .el-upload {
+  border: 1px dashed #cfd6e6;
+  border-radius: 0.16rem;
+  background: #f8fafc;
+}
+
+/deep/ .voucher-uploader .el-upload--picture-card {
+  width: 2.6rem;
+  height: 2.6rem;
+  line-height: 2.6rem;
+}
 </style>
diff --git a/src/page/user/account.vue b/src/page/user/account.vue
index fcb5cf9..5a0b3a2 100644
--- a/src/page/user/account.vue
+++ b/src/page/user/account.vue
@@ -294,7 +294,8 @@
     // 充值提示
     czts() {
       // Toast(this.$t("充值提示"));
-      window.open(config.onlineService); // 跳转客服
+      // window.open(config.onlineService); // 跳转客服
+      this.$router.push('/chongz');
     }
   },
   created() {
diff --git a/src/page/user/recharge.vue b/src/page/user/recharge.vue
index da4a925..eb6334a 100644
--- a/src/page/user/recharge.vue
+++ b/src/page/user/recharge.vue
@@ -154,7 +154,7 @@
         tradeAmoun: this.value,
         type: this.paytype
       });
-      console.log(res);
+      // console.log(res);
       if (res.status == 0) {
         window.open(res.data);
       } else {

--
Gitblit v1.9.3