From 2d9eaadefb271a43a9a7de7c299377321e07bc8e Mon Sep 17 00:00:00 2001
From: jhzh <1628036192@qq.com>
Date: Thu, 14 Aug 2025 13:29:10 +0800
Subject: [PATCH] 1
---
src/page/user/recharge.vue | 752 ++++++++++++++++++++++++++++++---------------------------
1 files changed, 392 insertions(+), 360 deletions(-)
diff --git a/src/page/user/recharge.vue b/src/page/user/recharge.vue
index 24a0ad6..85cad86 100644
--- a/src/page/user/recharge.vue
+++ b/src/page/user/recharge.vue
@@ -1,64 +1,28 @@
<template>
<div>
- <van-nav-bar
- :placeholder="true"
- :safe-area-inset-top="true"
- title="充值中心"
- left-arrow
- @click-left="onClickLeft"
- />
+ <van-nav-bar :placeholder="true" :safe-area-inset-top="true" :title="$t('充值中心')" left-arrow
+ @click-left="onClickLeft">
+ <template #right>
+ <van-icon @click="$router.push('/rechargelist')" name="orders-o" size="20" />
+ </template>
+ </van-nav-bar>
<main>
<div>
- <div class="main-title">{{ $t("支持得支付渠道") }}</div>
- <van-cell
- is-link
- :title="paymentSelectData.channelAccount || $t('請選擇')"
- @click="paymentShow = true"
- />
- <!-- paymentSelectData.channelMinLimit -->
- <van-action-sheet
- v-model="paymentShow"
- :actions="paymentActions"
- :cancel-text="$t('qx')"
- close-on-click-action
- @select="paymentSelect"
- />
- <template v-if="paymentSelectData.channelAccount !== undefined">
- <div class="main-title">{{ $t("收款卡號") }}</div>
- <div class="white-input">
- <span>{{ paymentSelectData.channelAccount }}</span>
- <i
- class="iconfont icon-fuzhi fuzhi"
- @click="(e) => copyText(e, channelAccount)"
- ></i>
- </div>
- <div class="main-title">{{ $t("收款銀行") }}</div>
- <div class="white-input">
- <span>{{ paymentSelectData.channelDesc }}</span>
- <i
- class="iconfont icon-fuzhi fuzhi"
- @click="(e) => copyText(e, paymentSelectData.channelDesc)"
- ></i>
- </div>
- <div class="main-title">{{ $t("收款人名字") }}</div>
- <div class="white-input">
- <span>{{ paymentSelectData.channelImg }}</span>
- <i
- class="iconfont icon-fuzhi fuzhi"
- @click="(e) => copyText(e, channelImg)"
- ></i>
- </div>
- <div class="main-title">{{ $t("請選擇充值賬戶") }}</div>
- <van-cell is-link :title="rechargeAccountData.name || $t('請選擇')" />
+
+ <template>
+
<!-- @click="rechargeAccountShow = true" -->
- <van-action-sheet
- v-model="rechargeAccountShow"
- :actions="rechargeAccountActions"
- :cancel-text="$t('qx')"
- />
+
<!-- close-on-click-action -->
<!-- @select="rechargeAccountSelect" -->
+ <div class="list_title">
+ <div class="list_top">{{$t('线上充值')}}</div>
+ <div class="list_xx">
+ <div class="list_xx_box" v-for="(item,index) in czlist" :key="index" @click="clicktype(item)">{{item}}
+ </div>
+ </div>
+ </div>
<div class="main-title">{{ $t("請選擇充值金額") }}</div>
<div class="white-input">
<input type="number" :value="value" @input="inputValue" />
@@ -66,55 +30,36 @@
</div>
<div class="bottom-text">
- <!---->
- <!-- <div class="balance">
- <div>需要支付</div>
- <div class="balance-text" style="margin-bottom: 0px">
- 0.0000 {{ rechargeAccountData.symbolCode }}
- </div>
- </div> -->
<div class="balance" style="margin-top: 10px">
<div>{{ $t("最小充值金額") }}</div>
<div class="balance-text" style="margin-bottom: 0px">
- {{ paymentSelectData.channelMinLimit }}
- {{ rechargeAccountData.symbolCode }}
+ <!-- {{ paymentSelectData.channelMinLimit }}
+ {{ rechargeAccountData.symbolCode }} -->
+ 100000
</div>
</div>
<div class="division"></div>
- <div class="upload-text">
- <div style="margin-bottom: 0.37333rem">
- {{ $t("上傳憑證:") }}
- </div>
- <el-upload
- :with-credentials="true"
- class="avatar-uploader"
- :action="admin + '/user/upload.do'"
- list-type="picture-card"
- name="upload_file"
- :show-file-list="false"
- :on-success="handleAvatarSuccess"
- :on-error="handleError"
- :before-upload="beforeAvatarUpload"
- :disabled="!showBtn"
- :limit="1"
- >
- <img
- v-if="form.img1key"
- :src="form.img1key"
- class="id-img avatar"
- style="width: 100%; height: 100%"
- />
- </el-upload>
- </div>
+
</div>
- <van-button
- :disabled="butFlg"
- class="but"
- type="primary"
- style="margin-top: 1.04rem; margin-bottom: 1.04rem"
- @click="selCzFns"
- >{{ $t("hj172") }}</van-button
- >
+ <!-- :disabled="butFlg" -->
+ <div style="font-size: 12px;margin-top: 20px;color: #939298;">
+ {{$t('tips333')}}
+ </div>
+ <div style="font-size: 12px;margin-top: 10px;color: #939298;line-height: 16px;">
+ {{$t('tips111')}}
+ </div>
+ <div style="font-size: 12px;margin-top: 10px;color: #939298;line-height: 16px;">
+ {{$t('tips222')}}
+ </div>
+ <!-- <div style="display: flex;justify-content: space-between;align-items: center;margin-top: 20px;">
+ <div class="payclass" @click="paytype=1" :style="paytype==1?'border: 1px solid #185546;':'border: 1px solid #e5e8ed;'">Pay 1</div>
+ <div class="payclass" @click="paytype=2" :style="paytype==2?'border: 1px solid #185546;':'border: 1px solid #e5e8ed;'">Pay 2</div>
+ </div> -->
+ <van-button class="but" type="primary" style="margin-top: 1.04rem; margin-bottom: 1.04rem"
+ @click="selCzFns">{{ $t("hj172") }}</van-button>
+ <van-dialog v-model="dialogVisible" :title="$t('请联系客服进行充值服务')" show-cancel-button :confirm-button-text="$t('联系客服')"
+ :cancel-button-text="$t('qx')" @confirm="onConfirm" @cancel="onCancel">
+ </van-dialog>
</template>
</div>
</main>
@@ -122,290 +67,377 @@
</template>
<script>
-import { ActionSheet } from "vant";
-import ClipboardJS from "clipboard";
-import apiUrl from "@/axios/api.url.js";
-import { siteGetPayInfo, selCzFn } from "../../axios/api";
-import { Notify } from "vant";
-// baseURL
-export default {
- components: { ActionSheet, [Notify.Component.name]: Notify.Component },
- mounted() {
- this.getPayInfos();
- },
- // getPayInfo
- data() {
- return {
- butFlg: true,
- admin: apiUrl.baseURL,
- value: 0,
- rechargeSelect: {},
- paymentSelectData: {},
- rechargeAccountData: {},
- show: false,
- actions: [{ name: "銀行卡充值", key: "YHK" }],
- paymentShow: false,
- paymentActions: [],
- rechargeAccountShow: false,
- rechargeAccountActions: [
- {
- title: this.$t("美股資產"),
- title1: this.$t("美股可用"),
- title2: this.$t("美股冻结"),
- name: this.$t("US"),
- key: "US",
- symbol: "$",
- symbolCode: "USD",
+ import {
+ ActionSheet
+ } from "vant";
+ import ClipboardJS from "clipboard";
+ import apiUrl from "@/axios/api.url.js";
+ import {
+ siteGetPayInfo,
+ selCzFn,
+ thirdPartyRecharge
+ } from "../../axios/api";
+ import {
+ Notify
+ } from "vant";
+ import {
+ rechargeAccountActions
+ } from "@/utils/rechargeActions";
+ // baseURL
+ export default {
+ components: {
+ ActionSheet,
+ [Notify.Component.name]: Notify.Component
+ },
+ mounted() {
+ this.getPayInfos();
+ },
+ // getPayInfo
+ data() {
+ return {
+ dialogVisible: false,
+ loading: false,
+ butFlg: true,
+ admin: apiUrl.baseURL,
+ value: 0,
+ rechargeSelect: {},
+ paymentSelectData: {},
+ rechargeAccountData: {},
+ show: false,
+ actions: [{
+ name: this.$t("銀行卡充值"),
+ key: "YHK"
+ }],
+ paymentShow: false,
+ paymentActions: [],
+ rechargeAccountShow: false,
+ rechargeAccountActions: rechargeAccountActions,
+ showBtn: true,
+ imgStatus: false,
+ paytype: 1,
+ form: {
+ img1key: "",
},
- // {
- // title: this.$t("印股資產"),
- // title1: this.$t("印股可用"),
- // title2: this.$t("印股冻结"),
- // key: "IN",
- // symbol: "RM",
- // symbolCode: "MYR",
- // },
- {
- name: this.$t("MAS"),
- title: this.$t("馬股資產"),
- title1: this.$t("馬股可用"),
- title2: this.$t("馬股冻结"),
- key: "MAS",
- symbol: "RM",
- symbolCode: "MYR",
- },
- ],
- showBtn: true,
- imgStatus: false,
- form: {
- img1key: "",
+ czlist: ['500000', '1000000', '1500000', '2000000', '2500000', '3000000']
+ };
+ },
+ methods: {
+ clicktype(e) {
+ this.value = e
},
- };
- },
- methods: {
- judgeValue() {
- console.log(this.form.img1key, this.value);
- if (this.form.img1key && this.value) {
- this.butFlg = false;
- } else {
- this.butFlg = true;
- }
- },
- inputValue(e) {
- this.value = e.target.value;
- this.judgeValue();
- },
- async selCzFns() {
- // payTypeId payAmt img
- if (!this.value) {
- return Notify(this.$t("hj171"));
- }
- if (!this.form.img1key) {
- return Notify(this.$t("请上传文件"));
- }
- const res = await selCzFn({
- payTypeId: this.paymentSelectData.id,
- payAmt: this.value,
- img: this.form.img1key,
- });
- if (res.status === 0) {
- Notify({ type: "success", message: "充值成功" });
- setTimeout(() => {
- this.onClickLeft();
- }, 500);
- }
- // Notify("请上传文件");
- },
- async getPayInfos() {
- const res = await siteGetPayInfo();
- if (res.status === 0) {
- res.data.map((item) => {
- item.name = item.channelAccount;
- });
- this.paymentActions = res.data;
- }
- console.log(res);
- },
- handleAvatarSuccess(res, file) {
- this.imgStatus = false;
- this.form.img1key = res.data.url;
- this.judgeValue();
- },
- beforeAvatarUpload(file) {
- this.judgeValue();
- this.imgStatus = true;
- },
- handleError() {
- this.imgStatus = false;
- },
- // upload
- async afterRead(file) {
- console.log(file);
- let formData = new FormData();
- formData.append("file", file.file || file.raw);
- console.log(formData);
- const res = await upload({ file: formData });
- console.log(res);
- },
- copyText(e, data) {
- var clipboard = new ClipboardJS(".copy-button", {
- text: () => data,
- });
-
- clipboard.on("success", () => {
- // alert("已复制到剪贴板");
- clipboard.destroy();
- });
-
- clipboard.onClick(e);
- },
- onClickLeft() {
- this.$router.push("/user");
- },
- select(e) {
- this.rechargeSelect = e;
- },
- rechargeAccountSelect(e) {
- this.rechargeAccountData = e;
- },
- paymentSelect(e) {
- this.paymentSelectData = e;
- console.log(e);
- this.rechargeAccountActions.map((item) => {
- console.log(item, e);
- if (item.key === e.assetsType) {
- this.rechargeAccountData = item;
+ judgeValue() {
+ console.log(this.form.img1key, this.value);
+ if (this.form.img1key && this.value) {
+ this.butFlg = false;
+ } else {
+ this.butFlg = true;
}
- });
- console.log(this.rechargeAccountData, " this.rechargeAccountData");
+ },
+ inputValue(e) {
+ this.value = e.target.value;
+ this.judgeValue();
+ },
+ async selCzFns() {
+ // const res = await thirdPartyRecharge({
+ // tradeAmoun: this.value,
+ // type:this.paytype
+ // });
+ // console.log(res);
+ // if (res.status == 0) {
+ // window.open(res.data);
+ // }else{
+ // Notify(res.msg);
+ // }
+ // if (!this.value) {
+ // return Notify(this.$t("hj171"));
+ // }
+ // if (!this.form.img1key) {
+ // return Notify(this.$t("请上传文件"));
+ // }
+ if(this.value<100000){
+ return Notify(this.$t("最小充值金額")+100000);
+ }
+ const res = await selCzFn({
+ // payTypeId: this.paymentSelectData.id,
+ payAmt: this.value,
+ // img: this.form.img1key,
+ });
+ if (res.status === 0) {
+ // Notify({
+ // type: "success",
+ // message: this.$t("请联系客服")
+ // });
+ this.dialogVisible = !this.dialogVisible
+ // setTimeout(() => {
+ // this.$router.push("/rechargelist");
+ // }, 500);
+ }
+ // Notify("请上传文件");
+ // return Notify(this.$t("请上传文件"));
+ },
+ // 点击确认按钮时的事件
+ onConfirm() {
+ this.dialogVisible = false;
+ window.open('https://lin.ee/7I7cvGD', '_blank');
+ console.log("已确认操作");
+ },
+ // 点击取消按钮时的事件
+ onCancel() {
+ this.dialogVisible = false;
+ console.log("已取消操作");
+ },
+ async getPayInfos() {
+ const res = await siteGetPayInfo();
+ if (res.status === 0) {
+ res.data.map((item) => {
+ item.name = item.channelAccount;
+ });
+ this.paymentActions = res.data;
+ }
+ console.log(res);
+ },
+ handleAvatarSuccess(res, file) {
+ this.imgStatus = false;
+ this.form.img1key = res.data.url;
+ this.loading = false;
+ this.judgeValue();
+ },
+ beforeAvatarUpload(file) {
+ this.loading = true;
+ this.judgeValue();
+ this.imgStatus = true;
+ },
+ handleError() {
+ this.loading = false;
+ this.imgStatus = false;
+ },
+ // upload
+ async afterRead(file) {
+ let formData = new FormData();
+ formData.append("file", file.file || file.raw);
+ // console.log(formData);
+ const res = await upload({
+ file: formData
+ });
+ // console.log(res);
+ },
+ copyText(e, data) {
+ var clipboard = new ClipboardJS(".copy-button", {
+ text: () => data,
+ });
+
+ clipboard.on("success", () => {
+ clipboard.destroy();
+ });
+
+ clipboard.onClick(e);
+ },
+ onClickLeft() {
+ this.$router.push("/user");
+ },
+ select(e) {
+ this.rechargeSelect = e;
+ },
+ rechargeAccountSelect(e) {
+ this.rechargeAccountData = e;
+ },
+ paymentSelect(e) {
+ this.paymentSelectData = e;
+ this.rechargeAccountActions.map((item) => {
+ if (item.key === e.assetsType) {
+ this.rechargeAccountData = item;
+ }
+ });
+ },
},
- },
-};
+ };
</script>
<style lang="less" scoped>
-.but {
- width: 100%;
- color: #ffffff;
- background-color: #1989fa;
- border-radius: 8px;
- height: 66px;
- font-size: 22px;
-}
-.bottom-text {
- width: 100%;
- background-color: #fff;
- padding: 0.26667rem 0.37333rem;
- box-sizing: border-box;
- margin-top: 0.26667rem;
- // margin-bottom: 80px;
- .balance {
+ /deep/.van-dialog__header--isolated{
+ padding: 0.444444rem;
+ }
+ .list_xx_box {
+ padding: 10px 20px;
+ border: 1px solid #d4d4d4;
+ border-radius: 8px;
+ font-size: 20px;
+ width: 160px;
+ text-align: center;
display: flex;
- justify-content: space-between;
- color: #181818;
- font-family: PingFang SC;
- font-size: 0.32rem;
- font-style: normal;
+ align-items: center;
+ justify-content: center;
+ margin-bottom: 10px;
font-weight: 500;
+ }
+
+ .list_xx {
+ display: flex;
+ flex-wrap: wrap;
+ justify-content: space-between;
+ }
+
+ .list_top {
+ font-size: 24px;
+ margin-bottom: 20px;
+ font-weight: bold;
+ }
+
+ .list_title {
+ display: flex;
+ flex-direction: column;
+ margin-top: 20px;
+ }
+
+ .payclass {
+ width: 150px;
+ height: 40px;
+ border-radius: 5px;
+ border: 1px solid #e5e8ed;
+ text-align: center;
+ line-height: 40px;
+ }
+
+ .but {
+ width: 100%;
+ color: #ffffff;
+ background-color: #185546;
+ border-radius: 8px;
+ height: 66px;
+ font-size: 22px;
+ }
+
+ .bottom-text {
+ width: 100%;
+ background-color: #fff;
+ padding: 0.26667rem 0.37333rem;
box-sizing: border-box;
- .balance-text {
+ margin-top: 0.26667rem;
+
+ // margin-bottom: 80px;
+ .balance {
+ display: flex;
+ justify-content: space-between;
color: #181818;
font-family: PingFang SC;
font-size: 0.32rem;
font-style: normal;
font-weight: 500;
- line-height: 0.37333rem;
- margin-bottom: 0.37333rem;
+ box-sizing: border-box;
+
+ .balance-text {
+ color: #181818;
+ font-family: PingFang SC;
+ font-size: 0.32rem;
+ font-style: normal;
+ font-weight: 500;
+ line-height: 0.37333rem;
+ margin-bottom: 0.37333rem;
+ }
+ }
+
+ .division {
+ width: 100%;
+ height: 0.02667rem;
+ flex-shrink: 0;
+ background-color: #e5e8ed;
+ margin: 0.37333rem 0;
+ }
+
+ .upload-text {
+ color: #181818;
+ font-family: PingFang SC;
+ font-size: 0.32rem;
+ font-style: normal;
+ font-weight: 500;
}
}
- .division {
- width: 100%;
- height: 0.02667rem;
- flex-shrink: 0;
- background-color: #e5e8ed;
- margin: 0.37333rem 0;
+
+ /deep/ .van-nav-bar__content {
+ height: 65px;
}
- .upload-text {
- color: #181818;
- font-family: PingFang SC;
- font-size: 0.32rem;
+
+ /deep/ .van-nav-bar__title {
+ font-family: "DINPro";
+ width: 100%;
+ height: 1.17333rem;
+ display: flex;
+ justify-content: center;
+ align-items: center;
font-style: normal;
font-weight: 500;
+ font-size: 0.48rem;
+ color: #14181f;
}
-}
-/deep/ .van-nav-bar__content {
- height: 65px;
-}
-/deep/ .van-nav-bar__title {
- font-family: "DINPro";
- width: 100%;
- height: 1.17333rem;
- display: flex;
- justify-content: center;
- align-items: center;
- font-style: normal;
- font-weight: 500;
- font-size: 0.48rem;
- color: #14181f;
-}
-/deep/ .van-cell {
- list-style: none;
- width: 100%;
- margin-top: 0.26667rem;
- background: #fff;
- border-radius: 0.10667rem;
- list-style: none;
- border: none;
- font-family: Arial, sans-serif;
- font-style: normal;
- font-weight: 500;
- font-size: 0.37333rem;
- line-height: 0.53333rem;
- padding: 0.32rem 0.4rem;
- box-sizing: border-box;
- margin-top: 0.26667rem;
- box-shadow: 0 0.16rem 0.32rem #eaeaea99;
-}
-main {
- padding: 0 0.4rem 0.53333rem;
- box-sizing: border-box;
-}
-.main-title {
- font-style: normal;
- font-weight: 400;
- font-size: 0.37333rem;
- color: #8c9fad;
- margin-top: 0.53333rem;
-}
-.white-input {
- width: 100%;
- background: #fff;
- border-radius: 0.10667rem;
- list-style: none;
- border: none;
- font-family: Arial, sans-serif;
- font-style: normal;
- font-weight: 500;
- font-size: 0.37333rem;
- line-height: 0.53333rem;
- padding: 0.32rem 0.4rem;
- -webkit-box-sizing: border-box;
- box-sizing: border-box;
- margin-top: 0.26667rem;
- -webkit-box-shadow: 0 0.16rem 0.32rem #eaeaea99;
- box-shadow: 0 0.16rem 0.32rem #eaeaea99;
- display: flex;
- justify-content: space-between;
-}
-.fuzhi {
- font-size: 28px;
- cursor: pointer;
-}
-.myr {
- color: rgb(150, 151, 153);
-}
-/deep/ .el-upload__input {
- display: none !important;
-}
-</style>
\ No newline at end of file
+ /deep/ .van-cell {
+ list-style: none;
+ width: 100%;
+ margin-top: 0.26667rem;
+ background: #fff;
+ border-radius: 0.10667rem;
+ list-style: none;
+ border: none;
+ font-family: Arial, sans-serif;
+ font-style: normal;
+ font-weight: 500;
+ font-size: 0.37333rem;
+ line-height: 0.53333rem;
+ padding: 0.32rem 0.4rem;
+ box-sizing: border-box;
+ margin-top: 0.26667rem;
+ box-shadow: 0 0.16rem 0.32rem #eaeaea99;
+ }
+
+ main {
+ padding: 0 0.4rem 0.53333rem;
+ box-sizing: border-box;
+ }
+
+ .main-title {
+ font-style: normal;
+ font-weight: 400;
+ font-size: 0.37333rem;
+ color: #8c9fad;
+ margin-top: 0.53333rem;
+ }
+
+ .white-input {
+ width: 100%;
+ background: #fff;
+ border-radius: 0.10667rem;
+ list-style: none;
+ border: none;
+ font-family: Arial, sans-serif;
+ font-style: normal;
+ font-weight: 500;
+ font-size: 0.37333rem;
+ line-height: 0.53333rem;
+ padding: 0.32rem 0.4rem;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ margin-top: 0.26667rem;
+ -webkit-box-shadow: 0 0.16rem 0.32rem #eaeaea99;
+ box-shadow: 0 0.16rem 0.32rem #eaeaea99;
+ display: flex;
+ justify-content: space-between;
+ }
+
+ .fuzhi {
+ font-size: 28px;
+ cursor: pointer;
+ }
+
+ .myr {
+ color: rgb(150, 151, 153);
+ }
+
+ /deep/ .el-upload__input {
+ display: none !important;
+ }
+
+ /deep/ .avatar-uploader {
+ width: 2.740741rem;
+ height: 2.740741rem;
+ }
+</style>
--
Gitblit v1.9.3