From 03043192ddf00f9a36b7454799a9152cd1b50a0b Mon Sep 17 00:00:00 2001
From: admin <344137771@qq.com>
Date: Tue, 06 Jan 2026 11:13:45 +0800
Subject: [PATCH] 1
---
src/views/cryptos/loan/index.vue | 228 +++++++++++++++++++++++++++++++++++++++++---------------
1 files changed, 165 insertions(+), 63 deletions(-)
diff --git a/src/views/cryptos/loan/index.vue b/src/views/cryptos/loan/index.vue
index 11c7e61..1a3192d 100644
--- a/src/views/cryptos/loan/index.vue
+++ b/src/views/cryptos/loan/index.vue
@@ -1,7 +1,7 @@
<template>
<div id="loanPage">
<div class="loan">
- <assets-head :title="$t('助力贷')">
+ <assets-head :title="$t('信用贷')">
<div class="right flex items-center">
<img src="@/assets/image/loan/rule.png" alt="rule-img" class="w-12 h-12 mr-5"
@click="$router.push('/cryptos/loanRule')" />
@@ -20,30 +20,12 @@
</div>
<!-- list -->
<div class="loanList">
- <div class="flex justify-between py-8 border-b-color">
+ <div class="flex justify-between py-8 border-b-color" @click="showCurrencyPicker = true">
<div>
- <span class="grayText">{{ $t("期望借款金额") }}</span>
+ <span class="grayText">{{ $t("货币选择") }}</span>
</div>
- <div class="flex align-center">
- <!-- <input class="font-semibold textColor border-none text-right mr-14 mainBackground" v-model="loanAmount" disabled="disabled" @input="inputAmunt" />-->
- <span class="mr-4 font-semibold textColor">{{ loanData.max_quota || 0 }}</span>
- <span class="font-semibold textColor"></span>
- </div>
- </div>
- <div class="flex justify-between py-8 border-b-color">
- <div>
- <span class="grayText">{{ $t("还款周期") }}</span>
- </div>
- <div class="flex items-center">
- <!-- <div class="font-semibold textColor relative">-->
- <div class="font-semibold mr-4 textColor relative" @click="isSelectDay = !isSelectDay">
- <span>{{ loanData.term }} {{ $t("天") }}</span>
- <!-- <div class="selectDay" v-show="isSelectDay">-->
- <!-- <div class="mb-20 border-b-white" v-for="(s,index) in selectDayList" :key="index" @click="selectDay(s)">-->
- <!-- <span>{{s}}</span>-->
- <!-- </div>-->
- <!-- </div>-->
- </div>
+ <div class="flex align-center items-center">
+ <span class="font-semibold textColor mr-2">{{ currencyAct.name1 || $t("请选择货币") }}</span>
<div class="w-6 h-6">
<img src="@/assets/image/loan/right.png" alt="right-img" class="w-full" />
</div>
@@ -51,13 +33,57 @@
</div>
<div class="flex justify-between py-8 border-b-color">
<div>
+ <span class="grayText">{{ $t("期望借款金额") }}</span>
+ </div>
+ <div class="flex align-center">
+ <!-- <input class="font-semibold textColor border-none text-right mr-14 mainBackground" v-model="loanAmount"
+ disabled="disabled" @input="inputAmunt" /> -->
+ <input class="font-semibold textColor border-none text-right mainBackground" v-model="loanAmount"
+ @input="inputAmunt" />
+ <!-- <span class="mr-4 font-semibold textColor">{{ loanData.max_quota || 0 }}</span> -->
+ <span class="font-semibold textColor ml-2">{{ currencyAct.currency_symbol }}</span>
+ </div>
+ </div>
+ <!-- <div class="flex justify-between py-8 border-b-color">
+ <div>
+ <span class="grayText">{{ $t("还款周期") }}</span>
+ </div>
+ <div class="flex items-center">
+ <div class="font-semibold mr-4 textColor relative" @click="isSelectDay = !isSelectDay">
+ <span>{{ loanData.term }} {{ $t("天") }}</span>
+ </div>
+ <div class="w-6 h-6">
+ <img src="@/assets/image/loan/right.png" alt="right-img" class="w-full" />
+ </div>
+ </div>
+ </div> -->
+ <div class="flex justify-between py-8 border-b-color">
+ <div>
+ <span class="grayText">{{ $t("最大可借") }}</span>
+ </div>
+ <div class="flex align-center">
+ <span class="font-semibold textColor">
+ {{ userInfo.loanLimit * currencyAct.rate }} {{ currencyAct.currency_symbol }}
+ </span>
+ </div>
+ </div>
+ <div class="flex justify-between py-8 border-b-color">
+ <div>
+ <span class="grayText">{{ $t("最小可借") }}</span>
+ </div>
+ <div class="flex align-center">
+ <span class="font-semibold textColor">100 {{ currencyAct.currency_symbol }}</span>
+ </div>
+ </div>
+ <!-- <div class="flex justify-between py-8 border-b-color">
+ <div>
<span class="grayText">{{ $t("日利率") }}</span>
</div>
<div class="flex align-center">
<span class="font-semibold textColor">{{ loanData.daily_rate * 1 * 100 || 0 }}%
</span>
</div>
- </div>
+ </div> -->
<div class="flex justify-between py-8 border-b-color">
<div>
<span class="grayText">{{ $t("还款方式") }}</span>
@@ -71,34 +97,30 @@
<span class="grayText">{{ $t("利息") }}</span>
</div>
<div class="flex align-center">
- <!-- 借款金额*日利率*借款天数-->
- <!-- <span class="font-semibold textColor">{{$bigDecimal.multiply(+loanData.maxQuota , +loanData.dailyRate) * +this.loanData.term || 0 }} USDT</span> -->
- <span class="font-semibold textColor">{{
- (+loanData.max_quota, +loanData.daily_rate) * +this.loanData.term || 0
- }}
- </span>
+ <span class="font-semibold textColor">
+ {{ +loanAmount * +this.userInfo.loanRate || 0 }} {{
+ currencyAct.currency_symbol }}
+ </span>
</div>
</div>
- <div class="flex justify-between py-8 border-b-color">
+ <!-- <div class="flex justify-between py-8 border-b-color">
<div>
<span class="grayText">{{ $t("放款机构") }}</span>
</div>
<div class="flex align-center">
<span class="font-semibold textColor">{{ loanData.lending_name }}</span>
</div>
- </div>
+ </div> -->
</div>
<!-- 上传区域-->
<div class="uploadImg">
- <div class="mb-10 textColor">
+ <!-- <div class="mb-10 textColor">
<span>{{ $t("信用放款(请确保图片清晰可见)") }}</span>
- </div>
+ </div> -->
<div class="upload">
- <div class="flex mt-8 mb-16 justify-between">
+ <!-- <div class="flex mt-8 mb-16 justify-between">
<div class="flex-1 flex flex-col text-center justify-center items-center">
<div class="upload-wrap">
- <!-- <img src="@/assets/image/kyc/0.png" alt="" class="w-full"-->
- <!-- v-if="[1, 2].includes(status) && frontFile.length === 0" />-->
<van-uploader v-model="frontFile" :max-count="1" :disabled="isUpload" :after-read="afterRead"
@click-upload="onClickUpload('frontFile')" />
</div>
@@ -108,8 +130,6 @@
</div>
<div class="flex-1 flex flex-col text-center justify-center items-center">
<div class="upload-wrap">
- <!-- <img src="@/assets/image/kyc/1.png" alt="" class="w-full"-->
- <!-- v-if="[1, 2].includes(status) && reverseFile.length === 0" />-->
<van-uploader v-model="reverseFile" :max-count="1" :disabled="isUpload" :after-read="afterRead"
@click-upload="onClickUpload('reverseFile')" />
</div>
@@ -117,12 +137,10 @@
{{ $t("证件反面") }}
</div>
</div>
- </div>
- <div class="flex mt-8 mb-16 justify-between">
+ </div> -->
+ <!-- <div class="flex mt-8 mb-16 justify-between">
<div class="flex-1 flex flex-col text-center justify-center items-center">
<div class="upload-wrap">
- <!-- <img src="@/assets/image/kyc/2.png" alt="" class="w-full"-->
- <!-- v-if="[1, 2].includes(status) && fileList.length === 0" />-->
<van-uploader v-model="fileList" :max-count="1" :disabled="isUpload" :after-read="afterRead"
@click-upload="onClickUpload('fileList')" />
</div>
@@ -138,7 +156,7 @@
{{ $t("拍摄示例") }}
</div>
</div>
- </div>
+ </div> -->
</div>
</div>
@@ -154,6 +172,24 @@
</li>
</ul>
</van-popup>
+ <!-- 货币选择弹窗 -->
+ <van-popup v-model:show="showCurrencyPicker" position="bottom" :round="true">
+ <div class="currency-picker">
+ <div class="picker-header text-center py-8 border-b-color">
+ <span class="font-semibold textColor">{{ $t("货币选择") }}</span>
+ </div>
+ <ul class="main2_background">
+ <li v-for="(item, index) in currencyList" :key="index"
+ class="flex justify-between items-center py-8 px-8 border-b-color" @click="selectCurrency(item)">
+ <div class="flex items-center">
+ <span class="font-semibold textColor">{{ item.name1 }}</span>
+ </div>
+ <img v-if="currencyAct.currency === item.currency" class="w-12 h-12"
+ src="../../../assets/image/public/checked.png" />
+ </li>
+ </ul>
+ </div>
+ </van-popup>
</div>
</div>
</template>
@@ -161,8 +197,11 @@
<script>
import AssetsHead from "@/components/Transform/assets-head/index.vue";
import { Popup, Uploader } from "vant";
+import { _getExchangeRate } from "@/service/home.api";
import { _getLoan, _loanApply } from "@/service/fund.api";
+import { _getIdentify, _info, _exchangerateuserconfiglist } from "@/service/user.api.js";
import { _uploadImage } from "@/service/upload.api.js";
+import { _exchangerateuserconfig } from "@/service/trade.api";
import { showToast } from "vant";
// import {debounce} from "@/utils/utis";
@@ -185,24 +224,31 @@
},
submit() {
// console.log('this.frontFile',this.frontFile)
- if (!this.frontFile.length || !this.reverseFile.length || !this.fileList.length) {
- showToast(this.$t("请上传完整证件信息"));
+ // if (!this.frontFile.length || !this.reverseFile.length || !this.fileList.length) {
+ // if (!this.frontFile.length || !this.reverseFile.length) {
+ // showToast(this.$t("请上传完整证件信息"));
+ // return;
+ // }
+
+ if (this.loanAmount > this.userInfo.loanLimit * this.currencyAct.rate || this.loanAmount < 100) {
+ showToast(this.$t("借款金额不符合可借区间"));
return;
}
- console.log(this.loanData);
+
_loanApply({
// ...this.loanData,
- term: this.loanData.term,
- quota: this.loanData.max_quota, //借贷金额 取max
- dailyRate: this.loanData.daily_rate,
- lendingInstitution: this.loanData.lending_institution, //放款机构名字
- lendingName: this.loanData.lending_name,
- repayment: this.loanData.repayment, //还款方式
- repayCycle: this.loanData.repay_cycle, //还款日期
- symbol: "USDT",
- frontFile: this.frontFile[0].resURL,
- reverseFile: this.reverseFile[0].resURL,
- fileList: this.fileList[0].resURL,
+ // term: this.loanData.term,
+ // quota: this.loanData.max_quota, //借贷金额 取max
+ quota: this.loanAmount, //借贷金额 取max
+ // dailyRate: this.loanData.daily_rate,
+ // lendingInstitution: this.loanData.lending_institution, //放款机构名字
+ // lendingName: this.loanData.lending_name,
+ // repayment: this.loanData.repayment, //还款方式
+ // repayCycle: this.loanData.repay_cycle, //还款日期
+ symbol: this.currencyAct.currency.toLowerCase(),
+ // frontFile: this.frontFile[0].resURL,
+ // reverseFile: this.reverseFile[0].resURL,
+ // fileList: this.fileList[0].resURL,
})
.then((res) => {
// console.log('res',res)
@@ -212,11 +258,38 @@
showToast(this.$t(err.msg));
});
},
+ // 获取汇率列表
+ ExchangeRate() {
+ _exchangerateuserconfiglist().then(res => {
+ this.exchangeRate = res || []
+ this.initCurrencyList() // 初始化货币列表
+ })
+ },
+ // 初始化货币列表(本地写死)
+ initCurrencyList() {
+ const currencies = {
+ name1: 'USD',
+ currency: "USDT",
+ currency_symbol: "$",
+ name: "美元",
+ rate: 1
+ }
+ // this.exchangeRate.name1 = this.exchangeRate.currency
+ this.exchangeRate.forEach(item => {
+ item.name1 = item.currency
+ })
+ this.currencyList = [currencies, ...this.exchangeRate]
+ this.currencyAct = this.currencyList[0]
+ },
+ // 选择货币
+ selectCurrency(item) {
+ this.currencyAct = item
+ },
// //防抖
- // inputAmunt(){
- // this.loanAmount = this.loanAmount.replace(/[^0-9]/g, '')
- // this.debounceFn()
- // },
+ inputAmunt() {
+ this.loanAmount = this.loanAmount.replace(/[^0-9]/g, '')
+ // this.debounceFn()
+ },
// debounceFn: debounce(function () {
// this.getInterest()
// }, 500),
@@ -251,9 +324,16 @@
this.isUpload = false;
});
},
+ getUserInfo() {
+ _info().then(res => {
+ this.userInfo = res
+ })
+ }
},
mounted() {
- this.getLoan();
+ // this.getLoan(); // 获取借贷信息(目前不需要了)
+ this.getUserInfo()
+ this.ExchangeRate() // 获取欧元的汇率
// this.getInterest()
},
data() {
@@ -268,6 +348,12 @@
// status:'',
isSelectDay: false,
isUpload: false,
+ loanAmount: 0,
+ userInfo: {},
+ exchangeRate: {},
+ showCurrencyPicker: false, // 货币选择弹窗显示状态
+ currencyList: [], // 货币列表
+ currencyAct: {}
};
},
};
@@ -323,5 +409,21 @@
.grayText {
color: #868e9b;
}
+
+ .currency-picker {
+ max-height: 70vh;
+ overflow-y: auto;
+
+ .picker-header {
+ position: sticky;
+ top: 0;
+ background: $main_background;
+ z-index: 1;
+ }
+
+ .border-b-color {
+ border-bottom: 1px solid $line_color;
+ }
+ }
}
</style>
--
Gitblit v1.9.3